首页 > 其他分享 >使用 Scrapy 框架的 Middleware

使用 Scrapy 框架的 Middleware

时间:2023-02-14 23:12:40浏览次数:32  
标签:调用 框架 process Middleware request spider Scrapy 报错 response

启用 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")

如上。

标签:调用,框架,process,Middleware,request,spider,Scrapy,报错,response
From: https://www.cnblogs.com/aduiduidui/p/17121181.html

相关文章

  • 通过HH8WilEdit学习WIL 文件编码 7 重新编写HH8WilEdit的框架
     unitmain;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls,ExtCtrls,Grids,ExtDlgs,my......
  • vue框架2
    插值语法mvvm演示<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><scriptsrc="./js/vue.js"></script></head>......
  • Svelte框架结合SpreadJS实现表格协同文档
    SpreadJS是葡萄城结合40余年专业控件技术和在电子表格应用领域的经验而推出的纯前端表格控件。作为一个类Excel控件,SpreadJS如何实现当前比较流行的表格协同呢?本篇文章将......
  • drf的总结与前端vue框架了解
    drf的总结与前端vue框架了解一、drf知识点整合1、drf入门及规范#1drf入门规范-前后端分离模式-前后端混合-postman-restful规范-drf:django......
  • CI框架操作数据库据库
    方法一:提前加载数据库类操作数据库......
  • Mybatis源码研究4:日志框架的实现
    一、logging包的概述本包主要依赖了Mybatis的reflection包的ExceptionUtil和io包的Resources,以及第三方的Log4j,Slf4j,CommonsLogging。Mybatis的其它包大量引用了本包中......
  • 框架学习的4种境界
    郑重申明:本文纯属Fans同学的个人见解,不喜勿喷。第1种境界:能够使用框架开发一个具体的项目。比如使用Struts2框架开发了一个博客系统。第2种境界:不仅会使用框架,还知道框架内......
  • 1.spring框架
    轻量级:体积小,应用java包少,可以独立进行使用。   Java直接输出一个类的对象的时候,会自动调用这个类的toString方法。这个方法在object类中,而所有的类都继承object......
  • 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v8.4版已发布
    关于MobileIMSDKMobileIMSDK是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、......
  • 移动端跨平台开发框架选择
    目前市面上比较有名的移动端跨平台开发框架有uniapp、reactnative、flutter,经过简单的调研,我选择深入学习uniapp,理由如下:reactnative:使用react开发。光学reactnative......