强大的爬虫框架 Scrapy
本节来介绍一个强大的爬虫框架 Scrapy。Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。
1. Scrapy 的架构
Scrapy 的架构图如下所示:
下面对上图中的各个组件做介绍:
2.组件间的数据流
上述各个组件间的数据流由执行引擎控制,其过程如下:
引擎从爬虫得到初始请求。
引擎在调度器中调度请求,并请求下一个要爬取的请求。
调度器返回引擎下一个要爬取的请求。
通过下载中间件,引擎将请求发送到下载器。
页面下载完毕之后,下载器生成一个该页面的响应,并通过下载中间件发送给引擎。
引擎收到来自下载器的响应,并通过爬虫中间件,将它发送到爬虫进行处理。
爬虫处理响应,而后通过爬虫中间件将抓取到的 items 和新的请求返回到引擎。
引擎将处理好的 items 发送到 Item Pipelines,然后发送已处理的请求到调度器,并询问下个可能的请求。
这个过程重复进行(从 1 开始),直到调度器没有更多的请求。
3.项目创建
我们可以通过命令行来创建一个 Scrapy 项目,命令为scrapy startproject hello_scrapy
,其中 hello_scrapy 为项目名称。创建的 Scrapy 项目的文件结构如下所示:
各个文件的功能为:
scrapy.cfg:它是 Scrapy 项目的配置文件,其内定义了项目的配置文件路径、部署相关信息等内容。
items.py:它定义 Item 数据结构,所有的 Item 的定义都可以放这里。
middlewares.py:它定义 Spider Middlewares 和 Downloader Middlewares 的实现。
pipelines.py:它定义 Item Pipeline 的实现,所有的 Item Pipeline 的实现都可以放这里。
settings.py:它定义项目的全局配置。
spiders:其内包含一个个 Spider 的实现,每个 Spider 都有一个文件。
版权声明: 本文为 InfoQ 作者【向阳逐梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/185a86ee98aae8da2a91a17a2】。文章转载请联系作者。
评论