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的速度瓶颈通常不在框架本身,而在于配置和代码写法。默认的并发设置比较保守,直接跑确实感觉慢。

核心提速就改这几个地方:

  1. settings.py 里把并发数调上去,比如:
    CONCURRENT_REQUESTS = 100  # 默认是16
    DOWNLOAD_DELAY = 0  # 关掉默认下载延迟
    
  2. 用上 scrapy-redis 做分布式,几台机器一起跑,速度直接翻倍。
  3. 检查一下你的 parse 方法,别在里面搞复杂的计算或者同步操作,用 Twisted 的异步写法。

另外,目标网站的反爬策略(频率限制、封IP)才是最大的速度杀手,用上合适的代理IP池和随机User-Agent比单纯调框架参数管用多了。

总结:改配置、做分布式、处理好反爬。

个人建议:先把 Scrapy 吃透再说性能问题

我修改了感觉好像是腾讯云的性能的太渣。 并不是 scrapy 的锅。

因为我国外抓国外开到 32 线程可以跑 100M

回到顶部