使用 Scrapy 框架的 Middleware
启用 Middleware
图中内容原本是注释的,去掉注释即可
'middlewares.'后面接的是middle类的名字,是可以改的。
改成如图的形式就算启用指定名称的 middleware 了。
函数详解
这两个函数不用动,保持默认就好
def from_crawler(cls, crawler):
def spider_opened(self, spider):
也可以新建一个类,变成如图形式
只要有这三个类,并且在 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")
如上。