首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Scrapy教程之一 简介

什么Scrapy?

Scrapy是基于Python的一款网络爬虫框架,是众多Python爬虫框架中使用人数最多,功能最为全面,用途最为广泛的框架。

所谓框架,就是在别人已经搭建好的舞台上施展自己的才艺,基于Scrapy可以大大提高我们的开发效率。下面是Scrapy的架构图:

我们看到主要由以下七大组件组成:

引擎(Engine)

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

调度器(Scheduler)

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

下载器(Downloader)

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

蜘蛛(Spiders)

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

管道(Item Pipeline)

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

下载器中间件(Downloader middlewares)

下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

Spider中间件(Spider middlewares)

Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。

上图中红色线条表示数据流向。

Scrapy中的数据流由执行引擎控制,其过程如下:

1、引擎从Spider中获取到一个爬取的URL(第一个URL我们在代码里面指定)并交给Scheduler。

2、引擎在Scheduler中调度下一个请求,并爬取下一个请求。

3、调度程序将下一个请求返回给引擎。

4、引擎将请求发送到下载器,并通过下载器中间件。

5、页面下载完成后,下载器生成一个响应(基于该页面)并将其发送到引擎,并通过下载器中间件。

6、引擎接收来自下载器的响应,并将其发送给Spiders进行处理,并通过Spiders中间件。

7、Spiders处理响应,并通过Spiders中间件向引擎返回已收集的项和新请求。

8、引擎将处理过的项发送到项管道,然后将处理过的请求发送到调度程序,并请求可能的下一个请求进行爬行。

9、这个过程会重复(从步骤1开始),直到调度程序不再发出请求为止。

在这里如果有不懂得地方暂时不要死钻牛角尖,只要有个整体认识就好,后续慢慢来。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190120G0UUQX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券