Python 爬虫学习笔记 – 第四周/单元10/Scrapy爬虫框架

English Version: https://today2tmr.com/en/2017/07/18/python-spider-study-note-week-fourunit-tenscrapy-crawling-framework

https://scrapy.org/

Scrapy爬虫框架介绍

安装: pip install scrapy
测试: scrapy -h

  • 不是一个简单的函数功能库,而是一个框架。
  • Scrapy爬虫框架结构
    • 爬虫框架是实现爬虫功能的一个软件结构和功能组件的集合。
    • 半成品,能够帮助用户实现专业网络爬虫。
    • 7个部分,5+2结构
      • ENGINE
      • SPIDERS
      • ITEM PIPELINES
      • DOWNLOADER
      • SCHEDULER
      • MIDDLERWARE, SPIDERS和ENGINE的中间件
      • MIDDLERWARE, DOWNLOADER和ENGINE的中间件
    • 数据含爬虫请求和网络内容
    • 3条主要数据流路径
      • SPIDERS ---REQUESTS---> ENGINE ---REQUESTS---> SCHEDULER
      • SCHEDULER ---REQUESTS---> ENGINE ---REQUESTS---> DOWNLOADER(连接互联网) ---RESPONSE---> ENGINE ---RESPONSE---> SPIDERS
      • SPIDERS(处理RESPONSE后) ---ITEMS/REQUESTS---> ENGINE
        • ---ITEMS---> ITEM PIPELINES
        • ---REQUESTS---> SCHEDULER
    • 入口: SPIDERS
    • 出口: ITEM PIPELINES
    • SCHEDULER, DOWNLOADER, ENGINE已有功能实现
    • ITEM PIPELINES, SPIDERS: 用户编写
      • 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爬虫的比较

  • 相同点
    • 都可进行页面请求和爬取
    • 可用性高,入门简单,文档丰富
    • 都没有处理js,提交表单,应对验证码等功能
  • 不同点
requests Scrapy
页面级爬虫 网站级爬虫
功能库 框架
并发性考虑不足,性能较差 并发性好,性能较高
重点在于页面下载 重点在于爬虫结构
定制灵活 一般定制灵活,深度定制困难
上手简单 入门稍难
  • 在有反爬技术的情况下,爬取速度慢或许更好,网站会屏蔽IP的爬取请求
  • 需求很小:requests,需求不太小:Scrapy,定制程度高:requests

Scrapy爬虫的常用命令

Scrapy命令行

  • 格式 >scrapy <command> [options] [args]
  • <command> Scrapy命令
  • 常用命令
命令 说明 格式
startproject 创建新工程 srapy startproject <name> [dir]
genspider 创建爬虫 scrapy genspider [options] <name> <domain>
settings 获得爬虫配置信息 scrapy settings [options]
crawl 运行爬虫 scrapy crawl <spider>
list 列出工程中所有爬虫 scrapy list
shell 启动URL调试命令行 scrapy shell [url]
  • 工程是一个最大单元,一个大的Scrapy框架
  • 每个框架下有多个爬虫,每个爬虫相当于Spider模块
  • 命令行逻辑(CLI)
    • 更容易自动化,适合脚本控制
    • 给程序员使用,功能比界面重要

单元小结

  • 5+2结构
  • requests与Scrapy的不同
  • Scrapy命令行的使用

Leave a Reply

Your email address will not be published.