10 scrapy框架解读--深入理解爬虫原理

来源:互联网 发布:淘宝大号怎么关联小号 编辑:程序博客网 时间:2024/06/05 19:33

这里写图片描述

scrapy框架结构图:

这里写图片描述

组成部分介绍:

  • Scrapy Engine:
    负责组件之间数据的流转,当某个动作发生时触发事件

  • Scheduler:
    接收requests,并把他们入队,以便后续的调度

  • Downloader:
    负责抓取网页,并传送给引擎,之后抓取结果将传给spider

  • Spiders:
    用户编写的可定制化的部分,负责解析response,产生items和URL

  • Item Pipeline:
    负责处理item,典型的用途:清洗、验证、持久化

  • Downloader middlewares:
    位于引擎和下载器之间的一个钩子,处理传送到下载器的requests和传送到引擎的response(若需要在Requests到达Downloader之前或者是responses到达spiders之前做一些预处理,可以使用该中间件来完成)

  • Spider middlewares:
    位于引擎和抓取器之间的一个钩子,处理抓取器的输入和输出
    (在spiders产生的Items到达Item Pipeline之前做一些预处理或response到达spider之前做一些处理)

Scrapy中的数据流:

  • Scrapy中的数据流由执行引擎控制,其过程如下:
    1. 引擎打开一个网站(open a domain),找到处理该网站的spider,并向该spider请求第一个要爬取的url(s);
    2. 引擎从spider中获取到第一个要爬取的url并在调度器(scheduler)以requests调度;
    3. 引擎向调度器请求下一个要爬取的url;
    4. 调度器返回下一个要爬取的url给引擎,引擎将url通过下载器中间件(请求requests方向)转发给下载器(Downloader);
    5. 一旦页面下载完毕,下载器生成一个该页面的responses,并将其通过下载器中间件(返回responses方向)发送给引擎;
    6. 引擎从下载器中接收到responses并通过spider中间件(输入方向)发送给spider处理;
    7. spider处理responses并返回爬取到的Item及(跟进的)新的resquests给引擎
    8. 引擎将(spider返回的)爬取到的Item给Item Pipeline,将(spider返回的)requests给调度器;
    9. (从第二部)重复直到(调度器中没有更多的request)引擎关闭该网站

中间件的编写:

  • down loader middle ware – 查看文档151页

  • spider middle wares – 查看文档162页

0 0
原创粉丝点击