Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘、监测和自动化测试。安装使用终端命令 pip install Scrapy
即可。
Scrapy 比较吸引人的地方是:我们可以根据需求对其进行修改,它提供了多种类型的爬虫基类,如:BaseSpider、sitemap 爬虫等,新版本提供了对 web2.0 爬虫的支持。
1 Scrapy 介绍
1.1 组成
-
Scrapy Engine(引擎):负责 Spider、ItemPipeline、Downloader、Scheduler 中间的通讯,信号、数据传递等。
-
Scheduler(调度器):负责接受引擎发送过来的 Request 请求,并按照一定的方式进行整理排列、入队,当引擎需要时,交还给引擎。
-
Downloader(下载器):负责下载 Scrapy Engine(引擎) 发送的所有 Requests 请求,并将其获取到的 Responses 交还给 Scrapy Engine(引擎),由引擎交给 Spider 来处理。
-
Spider(爬虫):负责处理所有 Responses,从中解析提取数据,获取 Item 字段需要的数据,并将需要跟进的 URL 提交给引擎,再次进入 Scheduler(调度器)。
-
Item Pipeline(管道):负责处理 Spider 中获取到的 Item,并进行后期处理,如:详细解析、过滤、存储等。
-
Downloader Middlewares(下载中间件):一个可以自定义扩展下载功能的组件,如:设置代理、设置请求头等。
-
Spider Middlewares(Spider 中间件):一个可以自定扩展和操作引擎和 Spider 中间通信的功能组件,如:自定义 request 请求、过滤 response 等。
总的来说就是:Spider
和 Item Pipeline
需要我们自己实现,Downloader Middlewares
和 Spider Middlewares
我们可以根据需求自定义。
1.2 流程梳理
1)Spider
将需要发送请求的 URL 交给 Scrapy Engine
交给调度器;
2)Scrapy Engine
将请求 URL 转给 Scheduler
;
3)Scheduler
对请求进行排序整理等处理后返回给 Scrapy Engine
;
4)Scrapy Engine
拿到请求后通过 Middlewares
发送给 Downloader
;
5)Downloader
向互联网发送请求,在获取到响应后,又经过 Middlewares
发送给 Scrapy Engine
。
6)Scrapy Engine
获取到响应后,返回给 Spider
,Spider<