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 数据流向
  • 爬虫的架构 爬虫的基本框架_爬虫的架构

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

Request+BeautifulSoup

Scrapy

页面级爬虫

网站级爬虫

功能库

框架

并发性考虑不足,性能较差

并发性好,性能较高

重点在于页面下载

重点在于爬虫结构

定制灵活

一般定制灵活,深度定制困难

上手十分简单

入门稍难

  • 何时使用 Request、Scrapy
  • 小的项目或者深度定制建议使用 Request
  • 大的项目并发量大的建议使用 Scrapy(持续周期性不间断爬取)
  • 下载
pip install scrapy
  • 测试
scrapy -version