爬虫概念

抓取网页数据的程序

网页三大特征

  • 每个网页都有自己的URL(统一资源定位符)来进行定位
  • 网页都是使用HTML(超文本标记语言)来描述页面信息。
  • 网页都使用HTTP/HTTPS(超文本传输协议)来传输HTML数据。

设计思路

  • 1.首先确定需要爬取的网页URL地址
  • 2.通过HTTP/HTTPS协议来获取对应的HTML页面
  • 3.提取HTML页面里有用的数据
    a.如果是需要的数据,就保存起来
    b.如果是页面里的其他URL,就执行第二步

如何抓取HTML页面

HTTP请求的处理,urllib、urllib2、requests

处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件

解析服务器的响应内容

re、xpath、beautifulsoup4(BS4)、jsonpath、pyquery等

使用某种描述性语言来给我们需要提取的数据定义一个匹配规则,符合这个规则的数据就会被匹配。

如何采集动态HTML、验证码的处理

通用的动态页面采集:Selenuim+phantomJS(无界面)

Scrapy框架

高定制性高性能(异步网络框架twisted),数据下载速度快。
提供数据存储、数据下载、提取规则等组件。

分布式策略

scrapy-redis,在Scrapy的基础上添加了一套以以redis数据库为核心的一套组件。
让Scrapy支持分布式的功能,主要在redis里做请求指纹去重、请求分配、数据临时存储。

反爬虫

User Agent、IP代理、验证码、动态数据加载、加密数据