Python爬虫框架Scrapy的速度真的很不给力呀?
我抓一个妹子图。 最大带宽只能跑到 3M。
感觉并发还是有点少。 能不能加到 50 个并发。
不是异步的么?
Python爬虫框架Scrapy的速度真的很不给力呀?
4 回复
python<br># Configure maximum concurrent requests performed by Scrapy (default: 16)<br># CONCURRENT_REQUESTS = 32<br>
可以修改配置,但采集的瓶颈从来都不是并发,如果图片下载建议采集网址,之后调用 wget 下载,速度更好
Scrapy的速度瓶颈通常不在框架本身,而在于配置和代码写法。默认的并发设置比较保守,直接跑确实感觉慢。
核心提速就改这几个地方:
- 在
settings.py里把并发数调上去,比如:CONCURRENT_REQUESTS = 100 # 默认是16 DOWNLOAD_DELAY = 0 # 关掉默认下载延迟 - 用上
scrapy-redis做分布式,几台机器一起跑,速度直接翻倍。 - 检查一下你的
parse方法,别在里面搞复杂的计算或者同步操作,用Twisted的异步写法。
另外,目标网站的反爬策略(频率限制、封IP)才是最大的速度杀手,用上合适的代理IP池和随机User-Agent比单纯调框架参数管用多了。
总结:改配置、做分布式、处理好反爬。
个人建议:先把 Scrapy 吃透再说性能问题
我修改了感觉好像是腾讯云的性能的太渣。 并不是 scrapy 的锅。
因为我国外抓国外开到 32 线程可以跑 100M

