Scrapy爬虫框架结构

image.png
image.png

  • 看结构
    • 分布式
    • 5+2”结构:5个主要模块 + 2个中间件
  • 看流程(如上图所示)
  • 看数据流(如上图所示)

    数据流的三条路径

    image.png
    image.pngimage.png

  • 数据流的出入口

    • 入口:Spider的初始爬取请求
    • 出口:Item Pipeline
  • Engine不断控制各模块数据流,不间断从Scheduler处获得爬取请求,直至请求为空

    用户接口

    image.png

    框架解析

  • Engine

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

    • 目的:对请求和爬取项的在处理
    • 功能:修改、丢弃、新增请求或爬取项
    • 用户可以编写配置代码

      requests vs Scrapy

      image.png
      image.png
  • 如果爬取速度过快,有些网站可能会识别出爬虫而屏蔽,所以需要根据具体的网站等需求来进行选择

    如何选择

    image.png