middlewares中自定义的类中的方法命名以及dont_filter参数问题

middlewares中自定义的类中的方法命名以及dont_filter参数问题

https://img1.sycdn.imooc.com//climg/6178fcb90977c25b07970552.jpg

https://img1.sycdn.imooc.com//climg/6178fcc2090be0bd11830689.jpg

middlewares中自定义的类的方法名称比如process_reques这些名称是固定的吗?还是可以随意命名(测试随意命名后好像不行呢),以及dont_filter参数问题,dont_filter=True 告诉爬虫不参与去重这样不是会降低爬虫效率,该项目中在进行详情页请求时为什么会出现重复的url。


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学,你好!

1、方法名是固定的,例:process_request:每个交给下载器的request对象都会经过该方法,并期望返回response 。

process_response:当下载器完成请求,返回响应给引擎的时候调用

2、不去重可能会降低爬虫效率,也会避免若请求重复爬取不到数据的情况 。

3、重复的请求并不一定是重复的url,可能是多次请求一个url。可能会出现下载失败的情况,scrapy会重新请求,从而产生了重复的请求
祝学习愉快!

  • qq_rz眞_0 提问者 #1

    哪些情况下会造成下载失败呢,网络原因这个应该是其中之一吧,是否还有其他情况,对于可能会出现下载失败的情况,scrapy会重新请求,如果多次下载失败scrapy还会重复请求吗?还是说可以设置重复请求的次数,比如我想如果请求失败次数超过3次就不再重复请求了。

    2021-10-27 16:16:48
  • 好帮手慕美 回复 提问者 qq_rz眞_0 #2

    同学,你好!

    1、大多数情况下是网络原因导致的

    2、可以设置重试请求次数的,默认是3次。可以在setting.py文件中进行设置:

    RETRY_ENABLED: 是否开启retry

    RETRY_TIMES: 重试次数

    祝学习愉快!

    2021-10-27 17:06:42
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师