使用 Scrapy 框架的 Middleware

启用 Middleware

image

图中内容原本是注释的,去掉注释即可
'middlewares.'后面接的是middle类的名字,是可以改的。
改成如图的形式就算启用指定名称的 middleware 了。

函数详解

这两个函数不用动,保持默认就好

def from_crawler(cls, crawler):
def spider_opened(self, spider):

也可以新建一个类,变成如图形式
image
只要有这三个类,并且在 settings.py 启用了这个 middleware 就行

process_request:

在下载器请求之前调用

不同返回值所表示的含义

None        : 不做任何处理
Request     : 中断请求,重新发起请求
Response    : 将返回不做任何处理,不再调用 process_response 方法
raise       : 报错

具体含义、用处等,可以通过如下代码来一个个尝试

return None
return request
return response
raise Exception("爷故意弄报错的")

process_response:

在下载器请求完毕之后调用

不同返回值所表示的含义等同于 process_request

Request     : 中断请求,重新发起请求
Response    : 将返回不做任何处理,不再调用 process_response 方法
raise       : 报错

process_exception:

在上面两个函数中,发现异常时调用

不同返回值所表示的含义

None        : 不做任何处理
Request     : 中断请求,重新发起请求
exception   : 返回报错信息

其他

process_request(request, spider): 等函数中,spider 就是爬虫文件的意思
可以通过 spider.(静态属性名) 来调用、更改相关属性

print("spider.name")

如上。

posted @ 2023-02-14 22:57  淦丘比  阅读(20)  评论(0编辑  收藏  举报