【Python】一篇文章让你秒懂Scrapy爬虫框架

前言

本文来自嵩天老师《Python网络爬虫与信息提取》课程中关于Scrapy框架的介绍。这是我认为对Scrapy框架讲得最为通俗易懂、条理清晰的教程。

Scrapy是一个爬虫框架

  • 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。
  • 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。

“5+2”结构

  • 5是指5个模块:SPIDERS, ENGINE, SCHEDULER, DOWNLOADER, ITEM PIPELIINES
  • 2是指2个中间件:spider middleware(位于spiders和engine之间),downloader middleware(位于downloader和engine之间)
    在这里插入图片描述

3条数据流路径

  • spiders -> engine -> scheduler(1,2):engine从spiders获取了用户的爬取请求(requests,可简单理解为一个url),engine将请求发送给scheduler模块进行调度。
  • scheduler -> engine -> downloader -> engine -> spiders(3,4,5,6):engine从schedule获取一个请求(requests,真实的请求),engine通过中间件(downloader middleware)将请求发送给downloader,downloader获得请求后,连接互联网真实的爬取网页,并将爬取的内容封装成对象(response,响应)发送给engine,engine再将响应发送给spiders进行解析。
    (总结:这条数据流讲述一个真实的爬取url的请求,经过scheduler,downloader,最终返回的相关内容到达spiders)
  • spiders -> engine -> item pipelines / scheduler(7,8):spiders处理响应的内容,得到两个数据类型:scraped item(爬取项)、新的爬取请求(即:我们从网页上获得一个链接之后,如果这个网页中的其他链接也是我们感兴趣的内容,就可以在spiders中增加新的功能,再次进行爬取。),spiders将这两项内容发送给engine,而engine收到之后,将爬取项发送给item pipelines,将requests发送给scheduler。

在这里插入图片描述
小结:

  • engine控制着各个模块的数据流,不断从schedule获得真实的爬取请求,并发送给downloader进行爬取。
  • 整个框架的执行是从spiders向engine发送第一个请求开始,到获得所有链接的内容并将内容处理完放到item pipelines结束。所以框架的入口是spiders,出口是item pipelines。
  • engine、downloaders、scheduler是已有实现,无需用户编辑;spiders和item pipelines需要用户自行编写。

5个模块的功能

  • Engine(不需要用户修改):
    • 控制所有模块之间的数据流
    • 根据条件触发事件
  • Downloader(不需要用户修改):
    • 根据请求下载页面
  • Scheduler(不需要用户修改):
    • 对所有爬取请求进行调度管理
  • Spider(需要用户编写配置代码)
    • 解析Downloader返回的响应(Response)
    • 产生爬取项(scrapyed item)
    • 产生额外的爬取请求(Request)
  • Item Pipelines(需要用户编写配置代码)
    • 以流水线方式处理Spider产生的爬取项
    • 由一组操作顺序组成,类似流水线,每个操作是一个Item Pipeline类型
    • 可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库。

2个中间件

  • Downloader Middleware(用户可编写配置代码)
    • 目的:实施Engine、Scheduler和Downloader之间的数据流进行用户可配置的控制
    • 功能修改、丢弃、新增请求或响应
  • Spider Middleware(用户可编写配置代码)
    • 目的:对请求和爬取项的再处理
    • 功能:修改、丢弃、新增请求或爬取项

总结

从上述的介绍中,我们可以看出,框架中的五个模块形成了既定的功能,我们重点编写Spiders和Item Pipelines,用户为了操作其中的数据流,可以通过两个中间件,对request、response、item进行操作。


参考:https://www.bilibili.com/video/BV1qs411n79v?p=50

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章