[scrapy] 2024-04-27 圈点958
摘要:scrapy正常情况下,会对访问正常的网页进行采集处理。但是对于400以上的http错误的页面忽视,也就是不采取任何动作。这个时候,就有可能忽略掉一些有用的页面。应该记录下来。scrapy 获取http错误代码并将网圵写入日志的2种方法
scrapy正常情况下,会对访问正常的网页进行采集处理。但是对于400以上的http错误的页面忽视,也就是不采取任何动作。这个时候,就有可能忽略掉一些有用的页面。应该记录下来,甚至是再重新载入队列进行采集。其实很多时候,本来正常的页面,经常会因为一些特殊原因,而出现502等错误,至少应该记录下来,以供记录并下次采集。
scrapy 获取http错误代码并将网圵写入日志的2种方法:
1,在spider class 中写handle_httpstatus_list
操作方法:
在spider class中,加入:
handle_httpstatus_list = [500,502,503,504,400,403,404,408]
然后在第一个pause()中进行判断和处理
if response.status == 500:
pass
elif:
pass
解释:其实scrapy 默认是忽视这些http错误码的,这样设置后,将其继续下去。所以一定要注意后续的逻辑。
注意:官方说明中强烈提示,如果你知道自己在做什么,否则不要这样处理。确实如此,如果不懂其中的逻辑,其非常有可能造成未知的情况。
2,在Middleware.py中 创建class,在其中进行判断处理。
1)在middleware.py中创建:
'reason': reason}
复制进来的内容,格式有点错误。测试OK!
2)setting中设置
DOWNLOADER_MIDDLEWARES中添加
'dy.middlewares.Faillog':520,
这个数字要稍大,如果太小,可能会抓取不到500后边的代码。比如1,就只能抓到400左右的代码,500后的代码会收集不到。
即可啦。