如何向Scrapy spider传递多个参数(运行“scrapy crawl”时出现多个spider的错误不再受支持)?

6
我希望能够向我的Scrapy爬虫传递多个用户定义的参数,因此我试图按照这篇文章的建议进行操作:如何在Scrapy爬虫中传递一个用户定义的参数

然而,当我按照那里的建议进行操作时,我遇到了一个错误:

root@ scrapy crawl dmoz -a address= 40-18 48th st -a borough=4
Usage
=====
  scrapy crawl [options] <spider>

crawl: error: running 'scrapy crawl' with more than one spider is no longer supported

我也尝试了各种引号的排列组合:

root@ scrapy crawl dmoz -a address= "40-18 48th st" -a borough="4"
Usage
=====
  scrapy crawl [options] <spider>
crawl: error: running 'scrapy crawl' with more than one spider is no longer supported

如何正确传递参数给Scrapy爬虫? 我想为爬虫的登录/抓取过程传递用户名和密码。感谢任何建议。

1个回答

13

我想没有 scrapy 的问题。这是由于你的 shell 解释输入时将标记分割成空格。因此,在键和其值之间不能有任何空格。请尝试:

scrapy crawl dmoz -a address="40-18 48th st" -a borough="4"

我也尝试了那个选项。我正在使用Ubuntu,如果有影响的话,但我已经尝试了输入和输入名称的每种引号排列组合。除非我漏掉了什么,你建议的正是我在问题结尾处作为我已经尝试过的示例的内容? - sunny
@sunny:你确定尝试了我的解决方案,但它也没有起作用吗?这是不同的。-a开关接受一个key=value参数,但是shell在scrapy之前处理输入,并且等号后面的空格使其生成两个不同的标记,scrapy将其解释为另一个爬虫。 - Birei
我刚刚复制并粘贴了你的代码行,但它给出了与我上面粘贴的完全相同的错误。 - sunny
@sunny:那就抱歉了。我用相同的代码测试过你的程序,出现了同样的错误,而我的程序却成功了,所以我无法提供更多帮助,因为无法重现你的问题。 - Birei
非常感谢你的帮助。我会尝试重新启动,但在Linux上通常不需要这样做。我认为你是对的,这一定是一个shell问题,所以我会朝着那个方向进行调查。谢谢! - sunny
很抱歉,我完全错了。一旦我重新启动,一切都正常了。也许这与我的putty连接有关,或者我不知道?你的解决方案现在正在运行。 - sunny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接