爬虫框架scrapy篇一——scrapy的架构

2021-01-25  本文已影响0人  一只酸柠檬精

1、架构图

先上官方的架构图


image.png

流程图,看起来清晰一点


image.png

2、模块功能

引擎(Engine)

scrapy的核心,负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。

爬虫(Spider)

发送需要爬取的链接给引擎,最后引擎把其他模块请求回来的数据再发送给爬虫,爬虫去解析想要的数据。

调度器(scheduler)

负责接收引发送过来的请求,并照一定的方式进行整理,负责调度请求的顺序等。

下载器(Downloader)

负责接收引擎传过来的下载请求,然后去网络上下载对应的数据再交还给引擎。

管道(Item Pipeline)

负责将Spider(爬虫)传递过来的数据进行保存。具体保存在哪里,应该看开发者自己的需求。

下载中间件(Downloader Middlewares)

可以扩展下载器和引擎之间通信功能的中间件。

Spider中间件(Spider Middlewares)

可以扩展引擎和爬虫之间通信功能的中间件。

image.png

3、整体流程

1、引擎打开一个网站(open a domain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。
2、引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。
3、引擎向调度器请求下一个要爬取的URL。
4、调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。
5、一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
6、引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
7、Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
6、引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器。
9、(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。
搬运自Scrapy框架的架构原理解析

传送门
爬虫框架scrapy篇二——创建一个scrapy项目
https://www.jianshu.com/p/00d99a9628b0
爬虫框架scrapy篇三——数据的处理与持久化以及遇到的一些问题
https://www.jianshu.com/p/8824623b551c
爬虫框架scrapy篇四——数据入库(mongodb,mysql)
https://www.jianshu.com/p/573ca74c2277
爬虫框架scrapy篇五——其他操作:post翻页请求
https://www.jianshu.com/p/bca689b4ebbd
其他参考:
爬虫框架Scrapy个人总结(详细)熟悉

上一篇下一篇

猜你喜欢

热点阅读