内置spider中间件含义

DepthMiddleware
classscrapy.contrib.spidermiddleware.depth.DepthMiddleware
DepthMiddleware是一个用于追踪每个Request在被爬取的网站的深度的中间件。 其可以用来限制爬取深度的最大深度或类似的事情。
DepthMiddleware 可以通过下列设置进行配置(更多内容请参考设置文档):
DEPTH_LIMIT - 爬取所允许的最大深度,如果为0,则没有限制。
DEPTH_STATS - 是否收集爬取状态。
DEPTH_PRIORITY - 是否根据其深度对requet安排优先级

HttpErrorMiddleware
classscrapy.contrib.spidermiddleware.httperror.HttpErrorMiddleware
过滤出所有失败(错误)的HTTP response,因此spider不需要处理这些request。 处理这些request意味着消耗更多资源,并且使得spider逻辑更为复杂。
根据 HTTP标准 ,返回值为200-300之间的值为成功的resonse。
如果您想处理在这个范围之外的response,您可以通过 spider的 handle_httpstatus_list 属性或 HTTPERROR_ALLOWED_CODES 设置来指定spider能处理的response返回值。
例如,如果您想要处理返回值为404的response您可以这么做:
class MySpider(CrawlSpider):
    handle_httpstatus_list = [404]
Request.meta 中的 handle_httpstatus_list 键也可以用来指定每个request所允许的response code。
不过请记住,除非您知道您在做什么,否则处理非200返回一般来说是个糟糕的决定。
HttpErrorMiddleware settings
HTTPERROR_ALLOWED_CODES
默认: []
忽略该列表中所有非200状态码的response。
HTTPERROR_ALLOW_ALL
默认: False
忽略所有response,不管其状态值。

OffsiteMiddleware
classscrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware
过滤出所有URL不由该spider负责的Request。
该中间件过滤出所有主机名不在spider属性 allowed_domains 的request。
当spider返回一个主机名不属于该spider的request时, 该中间件将会做一个类似于下面的记录:
DEBUG: Filtered offsite request to 'www.othersite.com': <GET http://www.othersite.com/some/page.html>
为了避免记录太多无用信息,其将对每个新发现的网站记录一次。因此,例如, 如果过滤出另一个 www.othersite.com 请求,将不会有新的记录。 但如果过滤出 someothersite.com 请求,仍然会有记录信息(仅针对第一次)。
如果spider没有定义 allowed_domains 属性,或该属性为空, 则offsite 中间件将会允许所有request。
如果request设置了 dont_filter 属性, 即使该request的网站不在允许列表里,则offsite中间件将会允许该request。

RefererMiddleware
classscrapy.contrib.spidermiddleware.referer.RefererMiddleware
根据生成Request的Response的URL来设置Request Referer 字段。
RefererMiddleware settings
REFERER_ENABLED
0.15 新版功能.
默认: True
是否启用referer中间件。

UrlLengthMiddleware
classscrapy.contrib.spidermiddleware.urllength.UrlLengthMiddleware
过滤出URL长度比URLLENGTH_LIMIT的request。
UrlLengthMiddleware 可以通过下列设置进行配置(更多内容请参考设置文档):
URLLENGTH_LIMIT - 允许爬取URL最长的长度.
 

 

 

参照官方文档:https://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/spider-middleware.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值