scrapy间歇性响应为空/降速/缓存

举报
冬晨夕阳 发表于 2022/03/30 00:21:18 2022/03/30
【摘要】 使用 scrapy访问豆瓣的搜索接口时,莫名会出现response json数据为空的情况。 加上回调重新请求 (要设置dont_filter=True 防止被过滤), 还是会出现异常。 最后发现是请求速...

使用 scrapy访问豆瓣的搜索接口时,莫名会出现response json数据为空的情况。
加上回调重新请求 (要设置dont_filter=True 防止被过滤), 还是会出现异常。
最后发现是请求速度过快导致的。

降速:
将其中的访问速度与下载速度调整一下,具体设置:

#并发请求个数(越小越慢) 默认是16个
CONCURRENT_REQUESTS = 5

#下载延迟时间(越大请求越慢)
DOWNLOAD_DELAY = 3

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

而对于多个spider文件需要不同的请求策略,则可以在爬虫文件中配置单独的 custom_settings:
在这里插入图片描述

自动限速(AutoThrottle):

可参考文档:https://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/autothrottle.html?highlight=auto#autothrottle-algorithm
该扩展能根据Scrapy服务器及您爬取的网站的负载自动限制爬取速度。
更友好的对待网站,而不使用默认的下载延迟0。自动调整scrapy来优化下载速度。

#默认False;为True表示启用AUTOTHROTTLE扩展
AUTOTHROTTLE_ENABLED = True

#默认3秒;初始下载延迟时间
AUTOTHROTTLE_START_DELAY = 1

#默认60秒;在高延迟情况下最大的下载延迟
AUTOTHROTTLE_MAX_DELAY = 3

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在这里插入图片描述

httpscatch缓存:
httpscatch 对HTTP请求和响应的缓存。
如果启用 HTTPCACHE_ENABLED 的话,它会缓存每个请求和对应的响应。

HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

可参考文档:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
在这里插入图片描述

文章来源: blog.csdn.net,作者:考古学家lx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_43582101/article/details/102479520

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。