转 小白学爬虫笔记15---Scrapy 库入门

Scrapy

功能强大的网络爬虫框架

 

pip install scrapy

爬虫框架

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

Scrapy爬虫结构--“5+2”结构

  • ENGINE
  • SPIDERS
  • SCHEDULER
  • ITEM PIPELINES
  • DOWNLOADER
  • MIDDLEWARE(ENGINE&SPIDERS)
  • MIDDLEWARE (ENGINE&DOWNLOADER)

路径

  1. SPIDERS-REQUESTS-ENGINE-SCHEDULER
  2. SCHEDULER-REQUESTS-ENGINE-REQUESTS-DOWNLOADER-RESPONSE-ENGINE-RESPONSE-SPIDER
  3. SPIDERS-ITEMS/REQUESTS-ENGINE-(1.ITEMS-ITEM PIPELINES)(2.REQUESTS-SCHEDULER)

 

  • 入口:SPIDERS
  • 出口:ITEM PIPELINES

需要编写(配置→修改模板或框架)入口和出口模块,其他三个模块已有实现(不需要编写)

Scrapy爬虫框架解析

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

Requests库和Scrapy库的比较

  • 相同点
    • 两者都可以进行页面请求和爬取,Python爬虫的两个重要技术路线
    • 两者可用性都好,文档丰富,入门简单。
    • 两者都没有处理js、提交表单、应对验证码等功能(可扩展)。
  • 不同
    • requests
      • 页面级爬虫
      • 功能库
      • 并发性考虑不足,性能较差
      • 重点在于页面下载
      • 定制灵活
      • 上手十分简单
    • Scrapy
      • 网站级爬虫
      • 框架
      • 并发性好,性能较高
      • 重点在于爬虫结构
      • 一般定制灵活,深度定制困难
      • 入门稍难

 

选用哪个技术路线开发爬虫
* 非常小的需求,requests库
* 不太小的需求,Scrapy库
* 定制陈固定很高的需求(不考虑规模),自搭框架,requests>Scrapy

猜你喜欢

转载自blog.csdn.net/paleyellow/article/details/82110453