|
Scrapy是一套基于Twisted的异步处理框架,是纯Python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松地实现一个爬虫,用来抓取网页内容或者各种图片。Scrapy运行于Linux/Windows/MacOS等多种环境,具有速度快、扩展性强、使用简便等特点。即便是新手,也能迅速学会使用Scrapy编写所需要的爬虫程序。Scrapy可以在本地运行,也能部署到云端实现真正的生产级数据采集系统。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求对它进行修改。当然,Scrapy只是Python的一个主流框架,除了Scrapy外,还有其他基于Python的爬虫框架,包括Crawley、Portia、Newspaper、Python-goose、Beautiful Soup、Mechanize、Selenium和Cola等。 Scrapy体系架构包括以下组成部分: (1) Scrapy引擎(Engine)。Scrapy引擎相当于一个中枢站,负责调度器、项目管道、下载器和爬虫四个组件之间的通信。例如,将接收到的爬虫的请求发送给调度器,将爬虫的存储请求发送给项目管道。调度器发送的请求,会被引擎提交到下载器进行处理,而下载器处理完成后会发送响应给引擎,引擎将其发送至爬虫进行处理。 (2) 爬虫(Spiders)。相当于一个解析器,负责接收Scrapy引擎发送过来的响应,对其进行解析,开发人员可以在其内部编写解析规则。解析好的内容可以发送存储请求给Scrapy引擎。在爬虫中解析出的新的URL,可以向Scrapy引擎发送请求。注意,入口URL也是存储在爬虫中。 (3) 下载器(Downloader)。下载器用于下载搜索引擎发送的所有请求,并将网页内容返回给爬虫。下载器建立在Twisted这个高效的异步模型之上。 (4) 调度器(Scheduler)。可以理解成一个队列,存储Scrapy引擎发送过来的URL,并按顺序取出URL发送给Scrapy引擎进行请求操作。 (5) 项目管道(Item Pipeline)。项目管道是保存数据用的,它负责处理爬虫中获取到的项目,并进行处理,比如去重、持久化存储(比如存数据库或写入文件)。 (6) 下载器中间件(Downloader Middlewares)。下载器中间件是位于引擎和下载器之间的框架,主要用于处理引擎与下载器之间的请求及响应。类似于自定义扩展下载功能的组件。 (7) 爬虫中间件(Spider Middlewares)。爬虫中间件是介于引擎和爬虫之间的框架,主要工作是处理爬虫的响应输入和请求输出。 (8) 调度器中间件(Scheduler Middlewares)。调度器中间件是介于引擎和调度器之间的中间件,用于处理从引擎发送到调度器的请求和响应,可以自定义扩展和操作搜索引擎与爬虫中间“通信”的功能组件(如进入爬虫的请求和从爬虫出去的请求)。 【出处】林子雨.大数据导论.人民邮电出版社,2020年9月第1版
|