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

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

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

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

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

而对于多个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

在这里插入图片描述

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'

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

发布了187 篇原创文章 · 获赞 1055 · 访问量 35万+

猜你喜欢

转载自blog.csdn.net/weixin_43582101/article/details/102479520