美文网首页
爬虫框架scrapy篇一——scrapy的架构

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

作者: 一只酸柠檬精 | 来源:发表于2021-01-25 17:29 被阅读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个人总结(详细)熟悉

    相关文章

      网友评论

          本文标题:爬虫框架scrapy篇一——scrapy的架构

          本文链接:https://www.haomeiwen.com/subject/mpfizktx.html