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

网友投稿 721 2022-05-29

使用 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

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

4

5

可参考文档:https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings

Scrapy

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Google资深工程师深度讲解Go语言-单任务版爬虫(十四)
下一篇:一日一技:谁说 Scrapy 不能爬 HTTP/2?
相关文章