scrapy框架结构

2017-09-19  本文已影响0人  Glory大秦

Scrapy框架结构

image.png

引擎 Scrapy Engine

负责控制数据流在系统中所有组件中流动,并在相应动作发生时出发事件。

调度器 Scheduler

从引擎接受request并将他们加入队列,以便之后引擎请求他们时提供给引擎。

下载器 Downloader

负责获取页面数据并提供给引擎,而后提供给spider

Spiders

用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。

Item Pipeline

负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。

下载中间件 DownLoader middlewares

在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。

Spider中间件 Spider middlewares

在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。

数据流 Data flow

1.引擎打开一个网站(open a domain),找到处理该网站的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给Item Pipeline,将(Spider返回的)Request给调度器。
9.(从第二步)重复直到调度器中没有更多地request,引擎关闭该网站。

上一篇下一篇

猜你喜欢

热点阅读