scrapy间歇性响应为空/降速/缓存
2023-03-15 22:06:48 时间
使用 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
相关文章
- 服务器部署前端&Node 项目(包括阿里云服务器、nginx 以及 mongoDB 的配置)
- 日均5亿查询量的京东到家订单中心,为什么舍MySQL用ES?
- 如何在MySQL 8中重置root密码
- 浅谈SQL Server内部运行机制
- MySQL8.0里GROUP BY有变化,注意了
- 删库跑路?这篇文章教你如何使用xtraback备份MySQL数据库
- 你的数据仓库还在为企业业务拖后腿吗?
- Linux服务器Redis漏洞被利用挖矿解决方法
- 使用Kafka和MongoDB进行Go异步处理
- 收藏备用,MySQL 8下忘密码后重置密码的办法(MySQL5老方法不灵了)
- 数据库不适合Docker及容器化的7大原因
- MariaDB 10.3首推系统版本表,误删数据不用跑路了!
- 七年一剑 华丽蜕变:WOT2018揭秘技术背后的真相
- 区块链真相如何?这篇文章说透了!
- 利用DB实现分布式锁的思路
- 区块链技术如果融合到各个行业,将如何改变我们的生活?
- 区块链创新离不开一流的工程技术能力
- Shiro整合springboot,freemaker,redis(含权限系统完整源码)
- 区块链如何提升食品安全,这有一份详细报告
- 教你玩转MyRocks/RocksDB—STATISTICS与后台线程篇