scrapy简介

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。(360百科)

Scrapy 使用了 Twisted异步网络库来处理网络通讯,整个Scrapy的架构图:

scrapy简介

Scrapy Engine: 引擎,负责Spiders、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等等!

Scheduler(调度器): 它负责接受引擎发送过来的requests请求,并按照一定的方式进行整理排列,入队、并等待Scrapy Engine(引擎)来请求时,交给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spiders来处理。

Spiders:它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)。

Item Pipeline:它负责处理Spiders中获取到的Item,并进行处理,比如去重,持久化存储(存数据库,写入文件,总之就是保存数据用的)。

DownloaderMiddlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spiders中间‘通信‘的功能组件(比如进入Spiders的Responses;和从Spiders出去的Requests)

Scrapy运行流程大概如下:

1.Spiders把要处理的url发给引擎

2.引擎再把URL传给调度器进行request排序入队

      3.引擎从调度器中取出一个链接(URL)用于接下来的抓取

4.引擎把URL封装成一个请求(Request)传给下载器

3.下载器把资源下载下来,并封装成应答包(Response)

4.爬虫解析Response

5.解析出实体(Item,则交给实体管道进行进一步的处理

6.解析出的是链接(URL,则把URL交给调度器等待抓取。

注意!只有当调度器中不存在任何request了,整个程序才会停止,scrapy自动查重避免爬取同样的网站地址



以上内容多有摘抄,算是整理吧,再此谢过各位原作者。对自己算是一种再学习吧。