scrapy间歇性响应为空/降速/缓存
使用 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
- 点赞
- 收藏
- 关注作者
评论(0)