scrapy

Scrapy介绍

2019-12-22  本文已影响0人  redher

什么是Scrapy

Scrapy是一种快速的高级的网络爬虫和数据抓取框架, 用于对网站进行爬取并从其页面提取结构化数据,被广泛用于数据挖掘和自动化测试。

安装Scrapy

在Linux、MacOS上直接使用pip安装就可以了。但是在Windows安装会报错,这是由于其依赖的twisted这个异步网络框架在pip安装中出现错误,此时我们可以在一个网站上搜索 twisted 下载下来的是一个wheel格式的文件,我们可以使用pip来安装它。(下载的时候需要注意平台) 然后我们再次使用pip安装scrapy就好了。

框架概览

scrapy框架数据流.png

相关概念

上图是经典的Scrapy流程图,其中的组件如下:

  1. Engine:框架引擎,负责控制系统所有组件之间的数据流,并在发生某些操作时触发事件。
  2. Scheduler:调度器接受来自引擎的请求,并将他们排队,以便在引擎请求时提供这些请求。
  3. Downloader:下载器负责获取网页并将其送入引擎,引擎负责将其网页送给Spider。
  4. Spider:spider是由scrapy用户编写的自定义类,用于解析响应并从中提取项目或后续的附加请求。
  5. Item Pipeline:项目管道负责处理spdier提取的项目,典型的任务包括清理数据,验证数据以及将数据保存到相应的介质中(数据库,xlsx,csv等都可以)
  6. Downloader middlewares:下载器中间件是位于引擎与下载器之间的特定钩子,当它们从引擎传递到下载器时处理请求,以及从下载器传递到引擎的响应。如果需要执行以下操作时可以使用下载器中间件:
  1. Spider middlewares:spider中间件是位于引擎之间的特定钩子,能够处理spider的输入(响应)和输出(项目和请求),如果需要以下操作时可以使用spider中间件:

数据流

Scrapy的爬取以及处理数据的方式就是在上面的组件中来回流动:

  1. 引擎从spider中得到一个初始的request来开始爬虫
  2. 引擎将请求发送给调度器并且继续要求一个request去爬取
  3. 调度器将从引擎得到的请求进行排队,在引擎需要的时候发送给引擎
  4. 引擎将请求发送给下载器,期间需要通过下载器请求中间件(process_request())的处理
  5. 下载器一旦下载页面完成,会将得到的Response传递给引擎,其中需要通过下载器响应中间件(process_response())的处理
  6. 引擎从下载器中得到响应后,会把他们传递给spider来处理,其中需要通过spider输入中间件(process_spider_input())处理
  7. spider得到这个响应并且分析这个响应将其分割为数据和新的请求,其中将数据通过spider输出中间件(process_spider_output())发送给引擎,而新的request直接发送给引擎就像第一步那样。
  8. 引擎得到数据并发送给Item Pipelines,而新的请求直接发送给调度器。
  9. 重复以上过程直到没有新的请求为止。

接下来

上面介绍了scrapy的基本原理,接下来我以爬取 食品安全抽检公布结果查询系统 这个网站为例来详细介绍scrapy的使用方法。

上一篇下一篇

猜你喜欢

热点阅读