python网络爬虫之Scrapy框架介绍

Scrapy的框架如图所示,这是从MOOC上获取图表示例,下面介绍具体都是干什么的。
python网络爬虫之Scrapy框架介绍

架构介绍

& Engine。是框架的核心,控制所有模块之间的数据流动,然后根据各个模块出现的时间进行触发。不需进行修改。
& Downloader。 下载器。获取请求并提交请求,下载网页内容,并将网页内容返回给Spider。不需进行修改。
& Scheduler。 将Engine发过来的请求进行调度,判断在爬取网站时的请求处理顺序,同时也可以在Engine在此请求时将请求提供给Engine。功能固定且完善,不需进行修改。
& Downloader Middlewares。 自如其名,是位于Engine和Downlader之间的钩子框架,主要处理之间相互响应。进行相应的修改以达到Engine、Downloader和Scheduler之间用户可配置的控制的目的。
& Spider。 解析响应并生成体局结果和新的请求,有着产生爬取项,产生爬取请求的功能。
& Item。 定义爬取结果的数据结构,爬取的数据会赋值该Item对象。
& Item Pipeline。 负责处理Spider从网页抽取的项目,其主要任务是清洗、验证和储存数据。里面的功能是完全由用户进行编写修改的。
& Spider Middlewares。 主要处理Engine向Spider输入的响应和输出的结果以及新的请求。

数据流

Scrapy中的数据流由Engine控制,过程如下。
1.Engine首先打开一个网站,找到处理该网站的Spider,并向Spider请求第一个需要爬取的URL。
2.Engine从Spider中获取到第一个要爬取的URL,通过Scheduler以Request的形式进行调度。
3.Engine向Scheduler请求下一个要爬取的URL。
4.Scheduler返回下一个要爬取的URL给Engine,Engine将URL通过 Downloader Middlewares发送到Engine。
5.页面下载完成,Downloader生成该页面的Response,并将其通过 Downloader Middlewares发送给Engine。
6.Engine从下载器接收到Response,并将其通过Spider Middlewares发送给Spider处理。
7.Spider处理Response,并返回提取到的Item及新的Request给Scheduler。
8.Engine将Spider返回的Item给Item Pipeline,将新的Request给Scheduler。
9.之后重复2-8,直到处理结束。

项目文件结构

scrapy.cfg Scrapy项目的配置文件,定义了项目的配置文件路径,部署相关信息等。
items.py 定义Item数据结构,在此文件编写Item的定义。
pipelines,py 定义Item Pipeline的实现,所有相关的实现都在此文件。
settings.py 项目的全局配置。
middlewares.py 它定义Spider Middlewares和Downloader Middlewares的实现。
spiders 包含Spider的实现,每一个Spider都有一个文件。