首页 > 技术文章 > Python 爬虫- Scrapy 框架介绍

handsome-black 2021-12-24 17:54 原文

Scrapy 框架介绍

  • Scrapy 将爬虫的三步:获取网页、解析网页、数据存储都整合的应用框架

    • 应用框架指的是实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务
  • Scrapy 框架主要由五大组件组成:

    • Scrapy 引擎(Scrapy Engine):

      • Scrapy 引擎是整个框架的核心。负责控制数据流在所以组件流动,并在相应动作时触发事件。引擎相当于计算机的 CPU,控制着整个流程
    • 调度器(Scheduler)

      • 从 Engine 接受 Request 并将他们加入 Spider 队列。可以理解帮助 URL(抓取网页的网址或者说是链接)的排队的工具
    • 下载器(Downloader)

      • 所有组件中负担最大的,它用于高速地下载网络上的资源。类似于之前爬虫学的“获取网页”的功能
    • 爬虫(Spider):

      • 爬虫是由用户编写的自定义的类,用于解析响应,从中提取数据,或其他要抓取的请求。即获得实体(Item)。 用户也可以从中提取出链接,让 Scrapy 继续抓取下一个页面。类似于“解析网页”的功能
    • 实体管道(Item Pipeline):

      • 管道负责在数据被爬虫提取后进行后续处理。典型的任务包括清理,验证和持久性(如将数据存储在数据库中)。类似于“存储数据”的功能
  • Scrapy 各组件对应爬虫三大流程

    组件 对应的爬虫三大流程 Scrapy项目是否需要修改
    Engine 无需修改,框架已经写好
    Schedule 无需修改,框架已写好
    Downloader 获取网页(Requests库) 无需修改,框架已写好
    Spider 解析网页(BeautifulSoup库) 需要
    Item Pipeline 存储数据(存入csv/txt……) 需要
    Downloader Middlware 获取网页-个性化部分 一般不用
    Spider 解析网页-个性化部分 一般不用
  • Scrapy 数据流向
    image-20211122154759499

  • Request vs. Scrapy

    • 相同点

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

      Request+BeautifulSoup Scrapy
      页面级爬虫 网站级爬虫
      功能库 框架
      并发性考虑不足,性能较差 并发性好,性能较高
      重点在于页面下载 重点在于爬虫结构
      定制灵活 一般定制灵活,深度定制困难
      上手十分简单 入门稍难
    • 何时使用 Request、Scrapy

      • 小的项目或者深度定制建议使用 Request
      • 大的项目并发量大的建议使用 Scrapy(持续周期性不间断爬取)
  • 下载

    pip install scrapy
    
  • 测试

    scrapy -version
    

推荐阅读