scrapy框架爬虫流程与介绍

scrapy框架爬虫流程与介绍

学习scrapy框架的网上教材:https://lib-nuanxin.wqxuetang.com/read/pdf/3210751

1.scrapy 的基础概念:

  scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量代码,就能够快速的抓取到数据内容。Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

scrapy框架爬虫流程与介绍

二、整体架构 

  • 引擎(Scrapy Engine):用来处理整个系统的数据流处理,触发事务 。
  • 调度器(Scheduler):用来接受引擎发过来的请求,压入队列中,并在引擎再次请求的时候返回。  
  • 下载器(Downloader):用于下载网页内容,并将网页内容返回给Spiders。   
  • 爬虫(Spiders):爬虫是主要干活的,用它来制订特定域名或网页的解析规则。编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。每个spider负责处理一个特定(或一些)网站。   
  • 项目管道(ItemPipeline):负责处理有Spiders从网页中抽取的项目,他的主要任务是清晰、验证和存储数据。当页面被Spiders解析后,将被发送到项目管道,并经过几个特定的次序处理数据。  
  • 下载器中间件(DownloaderMiddlewares):位于Scrapy引擎和下载器之间的钩子框架,主要是处理Scrapy引擎与下载器之间的请求及响应。     
  • 蜘蛛中间件(SpiderMiddlewares):介于Scrapy引擎和Spiders之间的钩子框架,主要工作是处理Spiders的响应输入和请求输出。  
  • 调度中间件(SchedulerMiddlewares):介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

scrapy框架爬虫流程与介绍

爬取流程:上图绿线是数据流向,所有的操作都是围绕着ScrapyEngine进行操作的,也就是说

ScrapyEngine处理指挥着整个框架;

  1. 引擎打开一个网站(open adomain),找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。
  2. 引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。
  3. 引擎向调度器请求下一个要爬取的URL。
  4. 调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。
  5. 一旦页面下载完毕,下载器生成一个该页面的Response,并将其通过下载中间件(返回(response)方向)发送给引擎。    
  6. 引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。
  7. Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。
  8. 引擎将(Spider返回的)爬取到的Item给ItemPipeline,将(Spider返回的)Request给调度器。
  9. (从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

scrapy框架爬虫流程与介绍