TypeError: ExecutionEngine.crawl() got an unexpected keyword argument ‘spider‘

作者在尝试使用Scrapy和redis进行分布式爬取时遇到问题,发现是由于Scrapy版本2.10.1与scrapy-redis的不兼容。将Scrapy降级到2.8.0并配合Python3.8,以及更新redis-py版本后,爬取速度显著提升。关键在于选择版本时的兼容性考虑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

翻译过来的意思就是:ExecutionEngine.crawl()方法不期望接收一个名为spider的关键字参数

问题来源

我想用redis和python中的scrapy框架进行,分布式爬取数据。然后,没改成分布式之前我可以正常运行爬取数据,但是肯定没有分布式爬取数据来的快。爬上万肯定慢的要死,要是用分布式每台电脑爬几千很快就结束了。

问题自查

还自查个啥,我也不会。自己根本没有往版本方向去想。看到一个人大佬说可能版本不兼容导致。我就去找我以前运行分布式成功的例子,我发现我现在运行的版本还真的不一样。我就试试,换了一个版本,你猜怎么着了,立马跑的比猪还快,我感动鸭!

问题解决

scrapy框架来进行分布式爬取数据需要导入scrapy-redis模块:

一开始我Scrapy模块版本是2.10.1然后就报了上面的错误,然后改成2.8.0成功了

成功版本:Scrapy版本2.8.0需要python版本3.8及以上,我自己用的Python3.10建议大家都用3.8因为它承上启下比较好。scrapy-redis版本是0.7.3 ,它的要求版本:

  • Python 3.7+
  • Redis >= 5.0
  • Scrapy >= 2.0
  • redis-py >= 4.0

总结

不是Scrapy版本问题,可能就是scrapy-redis版本问题。版本都可以自己随意搭配,但要都能兼容。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值