美文网首页
pyhton爬虫学习(十三):scrapy框架原理

pyhton爬虫学习(十三):scrapy框架原理

作者: 记忆九天 | 来源:发表于2020-05-20 14:30 被阅读0次

    Scrapy架构图

    在这里插入图片描述
    引擎(Engine)

    负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

    调度器(Scheduler)

    调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。

    下载器(Downloader)

    负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理

    爬虫(Spiders)

    它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器)

    管道(Item Pipeline)

    它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)

    下载器中间件(Downloader middlewares)

    下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。你可以当作是一个可以自定义扩展下载功能的组件

    Spider中间件(Spider middlewares)

    Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

    数据流向

    Scrapy的数据流由执行引擎(Engine)控制,其基本过程如下:

    1. 引擎从Spider中获取到初始Requests。
    2. 引擎将该Requests放入调度器,并请求下一个要爬取的Requests。
    3. 调度器返回下一个要爬取的Requests给引擎
    4. 引擎将Requests通过下载器中间件转发给下载器(Downloader)。
    5. 一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。
    6. 引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
    7. Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
    8. 引擎将(Spider返回的)爬取到的Item交给ItemPipeline处理,将(Spider返回的)Request交给调度器,并请求下一个Requests(如果存在的话)。
    9. (从第一步)重复直到调度器中没有更多地Request。

    制作 Scrapy 爬虫 一共需要4步:

    • 新建项目 (scrapy startproject xxx):新建一个新的爬虫项目
    • 明确目标 (编写items.py):明确你想要抓取的目标
    • 制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页
    • 存储内容 (pipelines.py):设计管道存储爬取内容
    参考文章

    https://www.cnblogs.com/cnkai/p/7396127.html

    相关文章

      网友评论

          本文标题:pyhton爬虫学习(十三):scrapy框架原理

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