翻译过来的意思就是: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版本问题。版本都可以自己随意搭配,但要都能兼容。