Python爬虫:Scrapy爬虫框架

Scrapy不是一个函数功能库,而是一个爬虫框架。

Scrapy爬虫框架包含7个部分,即5+2结构:5个框架主体部分,2个中间键。

5个模块

engine模块

已有实现。

  • 整个框架的核心,控制所有模块之间的数据流,任何模块与模块之间的数据流动都要经过engine模块的调度。
  • 根据条件触发事件;根据各个模块提供的事件进行触发。

scheduler模块

已有实现。

  • 对所有的爬取请求进行调度管理。假如有许多请求,哪些先访问哪些后访问,由scheduler模块来调度。

item pipelines模块

出口;用户编写(配置)
负责对提取的信息进行后处理。

  • 以流水线方式处理Spider产生得爬取项。
  • 由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型。
  • 可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。

spiders模块

入口;用户编写(配置)
用来向整个框架提供要访问的url链接,同时要解析从网络上获得的页面的内容。

向整个框架提供了最初始得访问链接,同时对每次爬取回来得内容进行解析,产生再次产生新的爬取请求,并且从内容中分析出提取出相关得数据。

  • 解析Downloader返回的响应(Response)
  • 产生爬取项(scraped item)
  • 产生额外的爬取请求(Request)

downloader模块

已有实现。

  • 根据用户提供的请求下载网页。获得一个请求,向网络中提交请求,获得返回的相关内容。

2个中间键

spiders中间键:spiders Middleware

engine和spiders之间。
目的:对请求和爬取项的再处理。
功能:修改、丢弃、新增请求或爬取项。

下载器中间键:Downloader Middleware

engine和downloader之间。
目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制。
功能:修改、丢弃、新增请求或响应。
用户可以编写配置代码。但是如果用户不需要对request和response进行修改,就不用更改这个中间键。

中间键参考:
https://cloud.tencent.com/developer/article/1382045
https://cloud.tencent.com/developer/article/1382077
https://blog.csdn.net/chanql123/article/details/100103348

3条主要的数据流路径

第1条数据流

从spiders模块,经过engine模块,到达scheduler模块。

engine从spiders的地方获得了爬取用户的请求(简单理解为url),这种请求即request。

第2条数据流

从scheduler模块,经过engine模块,到达downloader模块。downloader模块的数据再经过engine模块,返回到spiders模块。

第3条数据流

从spiders模块,经过engine模块,到达item pipelines模块以及scheduler模块。

其中,到达scheduler模块的request与第1条数据流的过程是一样的。区别在于,第1条数据流中的request直接来自spiders,第3条数据流中的request是来自downloader的。

posted @ 2022-05-20 19:17  孤舟浮岸  阅读(489)  评论(0编辑  收藏  举报