一、爬虫框架简介
爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。
爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
二、Scrapy爬虫框架结构
五个模块:
spiders(爬虫):解析downloader产生的相应(response),产生爬取项Item,产生额外的爬取请求(requests)
scheduler(调度器):负责对爬取请求进行调度管理(可能同时有多个爬虫请求)
downloader(下载器):根据请求下载网页,链接互联网,爬取相关的网页,返回爬取的内容
engine(引擎):控制所有模块之间的数据流,根据条件触发事件,负责其他四个模块之间的消息与数据的传送
item pipelines(管道):流水线方式处理spiders产生的爬取项;由一组操作顺序组成,每个操作是一个Item Pipelines类型
可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
两个中间件(Middlewares):(用户可以编写配置代码)
Spider Middleware:enging和spiders之间,对请求和爬取项的再处理
修改、丢弃、新增请求或爬取项
Downloader Middleware:enging和downloader之间,实施engine、scheduler和downloader之间进行用户可配置的控制
修改、丢弃、新增请求或响应
首先,spiders发送的requests通过engine发送给scheduler(1—2—3):
spiders发送requests,engine获得了spiders发送的requests消息(爬取用户的请求,可以理解为一个URL);
engine将requests请求转发给scheduler
其次(4—5—6):
scheduler通过engine将requests发送给downloader,downloader返回response消息,通过engine发送给spiders
最后,spiders通过engine将爬取的内容送到Item Pipelines以及scheduler(7—8):
spiders将解析的内容送给engine,engine将两部分分别送给Item Pipelines和scheduler
Item为要爬取的内容;送给scheduler的requests为需要继续跟进的内容
总得来说,整个执行过程从向engine发送第一个请求开始,到获得所有链接的内容,并将内容处理后放到Item Pipelines为止。
用户通过spiders请求要爬取的网页;scheduler对请求进行调度;downloader通过互联网爬取所需要的网页,并返回给spiders;spiders进行解析,提取所需的数据,并发送新的请求。
三、需要用户编写的模块
由于在这个框架下,用户编写的不是完整的所有代码,而仅仅是对spiders和item Pipelines 已有的代码框架进行编写,所以将这种代码编写方式叫做配置。相当于用户在Scrapy框架下进行简单的配置就可以实现相应的爬虫功能。
用户需要关心的就是爬取的内容,即spiders的编写;获得Item Pipelines后的数据处理。
四、requests库和Scrapy爬虫的比较
相同点:
两者都可以进行页面请求和爬取,python爬虫的两个重要技术路线。
两者可用性都好,文档丰富,入门简单。
两者都没有处理js、提交表单、应对验证码等功能(可扩展)。
不同点:
五、技术路线选取
六、Scrapy爬虫的常用命令
1.Scrapy是为持续运行设计的专业爬虫框架,提供操作的命令行。
2.常用命令介绍
常用的三个命令:startproject、genspider和crawl