Python爬虫学习(七)Scrapy爬虫框架详解

(六)Scrapy爬虫框架

(1)Scrapy爬虫框架结构

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

在这里插入图片描述

  • 看结构:分布式、“5+2”结构
  • 看流程:数据流

1.数据流的路径

  1. Engine从Spider处获得爬取请求(Request)
  2. Engine将爬取请求转发给Scheduler,用于调度
  3. Engine从Scheduler处获得下一个要爬取的请求
  4. Engine将爬取请求通过中间件发送给Downloader
  5. 爬取网页后,Downloader形成响应(Response)通过中间件发给Engine
  6. Engine将收到的响应通过中间件发送给Spider处理
  7. Spider处理响应后产生爬取项(scraped Item)和新的爬取请求(Request)给Engine
  8. Engine将爬取项发送给Item Pipeline(框架出口)
  9. Engine将爬取请求发送给Scheduler

2.数据流的出入口

  • Engine控制各模块数据流,不间断ongoingScheduler处获得爬取请求,直至请求为空

  • 框架入口:Spider的初始爬取请求

  • 框架出口:Item Pipeline

3.模块解析

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

(2)requests库和Scrapy爬虫的比较

  • 相同点:

  • 两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线

  • 两者可用性都好,文档丰富,入门简单

  • 两者都没有处理js、提交表单、应对验证码等功能(可扩展)

requests Scrapy
页面级爬虫 网站级爬虫
功能库 框架
并发性考虑不足,性能较差 并发性好,性能较高
重点在于页面下载 重点在于爬虫结构
定制灵活 一般定制灵活,深度定制困难
上手十分简单 入门稍难
  • 如何选择技术路线

  • 非常小的需求,requests库

  • 不太小的需求,Scrapy框架

    扫描二维码关注公众号,回复: 11062794 查看本文章
  • 定制程度很高的需求(不考虑规模),自搭框架requests>Scrapy

(3)Scrapy爬虫的常用命令

  • Scrapy命令行

    scrapy -h 命令

    scrapy [options] [args] Scrapy命令行格式

在这里插入图片描述

  • 命令行(不是图形界面)更容易自动化,适合脚本控制
    数据、将数据存储到数据库
    • 需要用户编写配置代码
  1. Spider Middleware
    • 对请求和爬取项的再处理
    • 修改、丢弃、新增请求或爬取项
    • 用户可以编写配置代码

(2)requests库和Scrapy爬虫的比较

  • 相同点:

  • 两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线

  • 两者可用性都好,文档丰富,入门简单

  • 两者都没有处理js、提交表单、应对验证码等功能(可扩展)

requests Scrapy
页面级爬虫 网站级爬虫
功能库 框架
并发性考虑不足,性能较差 并发性好,性能较高
重点在于页面下载 重点在于爬虫结构
定制灵活 一般定制灵活,深度定制困难
上手十分简单 入门稍难
  • 如何选择技术路线

  • 非常小的需求,requests库

  • 不太小的需求,Scrapy框架

  • 定制程度很高的需求(不考虑规模),自搭框架requests>Scrapy

(3)Scrapy爬虫的常用命令

  • Scrapy命令行

    scrapy -h 命令

    scrapy [options] [args] Scrapy命令行格式

[外链图片转存中…(img-QQ2eu90d-1587603530585)]

  • 命令行(不是图形界面)更容易自动化,适合脚本控制
  • 本质上,Scrapy是给程序员用的,功能(而不是界面)更重要
发布了10 篇原创文章 · 获赞 1 · 访问量 131

猜你喜欢

转载自blog.csdn.net/qq_39419113/article/details/105699274
今日推荐