本文介绍: Scrapy中间件两个爬虫中间件(一般不会去用,就不多赘述了下载中间件中间件在五大核心组件什么位置下载中间件位于引擎下载之间引擎会给下载传递请求对象下载器会给引擎返回响应对象。根据位置了解中间件的作用可以拦截scrapy框架中所有的请求响应拦截请求干什么修改请求ip修改请求的头信息设置请求cookie拦截响应干什么可以修改响应数据。这就是2个中间件,其中爬虫中间件很少用到,为了简介明了,我们给他删除或者注释掉就行了。

1、Scrapy框架初识(点击前往查阅)

2、Scrapy框架持久化存储(点击前往查阅)

3、Scrapy框架内置管道(点击前往查阅)

4、Scrapy框架中间件

5、Scrapy框架全站、分布式、增量式爬虫 

Scrapy 是一个开源的、基于Python爬虫框架,它提供了强大而灵活的工具用于快速、高效地提取信息。Scrapy包含自动处理请求、处理Cookies自动跟踪链接下载中间件等功能 

Scrapy框架架构图今天的中间件看完,回头来看下) 

        用来处理整个系统数据流处理, 触发事务(框架核心)

        用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页网址或者说是链接)的优先队列, 由它来决定下一个要抓取网址什么, 同时去除重复网址

    

        用于下载网页内容, 并将网页内容返回蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)

    

        爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户可以从中提取出链接,让Scrapy继续抓取下一个页面

    

        负责处理爬虫从网页中抽取实体,主要的功能持久实体验证实体有效性、清除需要的信息。当页面爬虫解析后,将被发送项目管道,并经过几个特定的次序处理数据

 什么是中间件?

一、中间件的应用

前置 settings 设置:(需要开启中间件)

1:中间件的介绍

  •  下载中间件图片中的2个也用不到啥,就删除即可

 1.1:中间件的运行顺序

下图可知:

process_exception 函数,为啥没执行???

答:因为没报错process_exception函数 只有在报错才会触发(图二)。

So :当我们知道这个,那可操作空间就很大了。

例如

2:process_request 拦截修改请求

在该函数中,我们做哪些设置操作呢?

1:开发代理中间件

2:开发UA中间件

3:开发Cookie中间件

Cookie补充:(具有session功能

补充:return返回值

return None  # 这个地方就返回 None 就是正确的。

# return request # 如果返回的是 request 代表重新发起请求,这就死循环了。

3:process_response 拦截修改响应

1:修改响应数据

数据的修改需要用到新的模块需要导入一下:

from scrapy.http import HtmlResponse

参数

补充:return返回值

4、process_exception 拦截错误

5、spider的作用 (数据交互

在中间件的3个函数中,都有 spider 这个参数,这个参数是做啥的?

答:数据交互

如何数据交互呢?接着往下看⬇️⬇️⬇️

例如

图一中:我们在爬虫文件中,设置了一个变量 msg

图二中:我们利用 spider.msg 就可以调用变量 msg

总结:由此我们可以得出,在中间件中只要有参数 spider 就可以调用 爬虫文件中的数据,进行数交互spider 就相当于 爬虫文件中类的实例化对象)。

图一: ⬇️

 图二:⬇️

补充:管道spider 作用

下图

原文地址:https://blog.csdn.net/wojiubugaosuni12/article/details/134709435

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_39068.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注