scrapy是为了爬取网站数据、提取结构性数据而编写的应用框架。
用户只需要开发几个模块就可以实现一个定制化爬虫,抓取内容和图片。
scrapy内部使用了Twisted异步网络框架来处理网络通讯,可以加快下载速度,并且包含了各种中间件接口。
Scrapy怎么完成爬虫工作:
先来一张官方图片
Engine引擎:负责Spiders、Scheduler、Downloader、Item Pipelines中间的通讯,传递数据。
Scheduler调度器:负责接收Engine发送的所有Request请求,并将其按照一定的方式进行整理排列、入队,当Engine需要时,送还给Engine。
Downloader下载器:负责下载Engine发送的所有Request请求,并且将其获取到的Response传递给Engine。
Spider爬虫:负责处理Downloader获取到的Response,并从中提取数据,发送给Engine,并且将需要跟进的URL再次发送给Engine,由Engine转发给Scheduler。
Item Piplines管道:负责处理Spider中提取的数据,对数据进行分析、过滤、存储等操作。
Middleware中间件:分为两个部分,一个是Downloader Middleware,另一个是Spider Middleware。
Downloader Middleware下载器中间件:用户自定义扩展下载功能。
Spider Middleware爬虫中间件:用户自定义扩展爬虫功能,例如操作request和response。
Scrapy运行流程:
1.Spider把需要爬取的页面URL给Engine;
2.Engine把URL放入Scheduler中,给Scheduler处理;
3.Scheduler把处理好的第一条request传入到Engine中;
4.Engine把request传入Downloader中,让它发送请求到目标网站;
5.Downloader把从服务器上接收到的response传入Engine中;
6.Engine把接收到的response传入Spider中,供其提取数据;
7.Spider把提取到的数据和下一条待爬取的URL传入Engine中;
8.Engine把接收到的数据传递给Item Piplines、把下一条待爬取的URL传入Scheduler中,给Scheduler处理;
这个流程一直循环运行,直到Scheduler中没有任何一条待爬取的URL,整个程序会停止。
网友评论