【Scrapy爬虫框架】{0} ——Scrapy爬虫框架介绍

参考资料:Python网络爬虫与信息提取(北京理工大学慕课)


Scrapy是什么?

在这里插入图片描述
Scrapy是一个功能强大并且非常快速的网络爬虫框架,是非常优秀的python第三方库,也是基于python实现网络爬虫的重要的技术路线。


Scrapy的安装:

直接在命令提示符窗口执行pip install scrapy貌似不行。

我们需要先下载需要的组件Twisted,然后再安装,下载地址在这里

下载完就是这个东西:
在这里插入图片描述
(有可能你下载的是其他版本,反正适合自己电脑的操作系统就对了)

然后我们打开命令提示符窗口(也就是平常所说的cmd),然后执行

pip install S:\Python\Twisted\Twisted-19.10.0-cp38-cp38-win_amd64.whl

(这个代码根据你下载的 Twisted 版本进行更改)

然后再执行pip install scrapy就搞定了。

安装完之后,可以执行scrapy -h测试一下是否安装成功:


注意:Scrapy不是一个函数功能库,而是一个爬虫框架。


Scrapy爬虫框架结构:

首先了解一下什么是爬虫框架:

其中很多半成品的功能用户可以直接使用,并且这种框架约束了一个使用的模板,用户就知道,对于一个网络爬虫来讲,它需要怎么去操作这个模板。

Scrapy爬虫框架一共包含七个部分,我们叫它“5+2”结构,其中有五个部分是框架的主体部分,另外包含两个中间件:

五个模块形成的结构就叫做Scrapy爬虫框架

在这五个模块之间,数据、包括用户提交的网络爬虫请求、以及从网络上获取的相关内容,在这些结构之间进行流动,形成了数据流


Scrapy框架包含三条主要的数据流路径:

  • 第一条路径:

    从 SPIDERS 模块,经过 ENGINE,到达 SCHEDULER。

其中 ENGINE 从 SPIDERS 的地方获得了爬取用户的请求,我们对这种请求叫REQUESTS(可以简单地把请求理解为一个url)。

那么,请求通过 SPIDERS 到达 ENGINE 之后,ENGINE 将这个爬取请求转发给了 SCHEDULER 模块。SCHEDULER 模块负责对爬取请求进行调度。

  • 第二条路径:

    从 SCHEDULER 模块,通过 ENGINE 模块,到达 DOWNLOADER 模块,并且最终数据返回到 SPIDERS 模块。

首先,ENGINE 模块从 SCHEDULER 获得下一个要爬取的网络请求,这个时候的网络请求是真实的、要去网络上爬取的请求。ENGINE获得这样的请求之后,通过中间件,发送给 DOWNLOADER 模块,DOWNLOADER 模块拿到这样的请求之后,真实地连接互联网,并且爬取相关的网页,爬取到网页之后,DOWNLOADER 模块将爬取的内容形成一个对象,这个对象叫 RESPONSE(响应)。将所有的内容封装成一个 RESPONSE 之后,将这个响应再通过中间件 ENGINE,最终发送给 SPIDERS。

在这条路径中,一个真实的、爬取url的请求,经过 SCHEDULER、DOWNLOADER,最终返回了相关内容,到达了 SPIDERS。

  • 第三条路径:

    从 SPIDERS 模块,经过 ENGINE 模块,到达 ITEM PIPELINES 模块以及 SCHEDULER 模块。

首先,SPIDERS 处理从 DOWNLOADER 获得的响应(也就是从网络中爬取的相关内容),处理之后产生了两个数据类型,一个数据类型叫爬取项,另外一个数据类型是新的爬取请求。

也就是说,我们从网络上获得一个网页之后,如果这个网页中有其他的链接也是我们十分感兴趣的,那么你可以在SPIDERS中增加相关的功能,对新的链接发起再次的爬取。

SPIDERS 生成了这两个数据类型之后,将它们发送给 ENGINE 模块,那么 ENGINE 模块收到了两类数据之后,将其中的 ITEMS 发送给 ITEM PIPELINES,将其中的 REQUESTS 发送给 SCHEDULER 进行调度,从而为后期的数据处理,以及再次启动网络爬虫请求提供了新的数据来源。

在这个路径之中,ENGINE 控制着各个模块的数据流,并且它不断地从 SCHEDULER 获得真实要爬取的请求,并且将这个请求发送给 DOWNLOADER。

整个框架的执行是从向 ENGINE 发送第一个请求开始,到获得所有链接的内容,并将内容处理后,放到 ITEM PIPELINES 为止。


(用户不需要去编写它们,它们会按照既定的功能去完成它们的任务)

  • SPIDERS 模块用来向整个框架提供要访问的url链接,同时要解析从网络上获得的页面的内容

  • ITEM PIPELINES 模块负责对提取的信息进行后处理

由于在这个框架下,用户编写的并不是完整的或者大片的代码,而仅仅是对 SPIDERS 和 ITEM PIPELINES 中已有的代码框架(或者叫代码的模板)进行编写,

所以,我们也将这种代码编写方式叫做配置

相当于用户在Scrapy爬虫框架下,经过简单的配置,就可以实现这个框架的运行功能,并且最终完成用户的爬取需求。

发布了15 篇原创文章 · 获赞 28 · 访问量 785

猜你喜欢

转载自blog.csdn.net/weixin_45961774/article/details/104494703