【问题标题】:How to invoke shell and pass arguments to spiders如何调用 shell 并将参数传递给蜘蛛
【发布时间】:2014-03-19 23:24:57
【问题描述】:

我曾经这样做是为了检查 HTML 并找出 xpath:

$ scrapy shell http://www.domain.com/whatever

现在我有一个蜘蛛,它必须接收一些参数。类似的东西

$ scrapy crawl -a arg1=one MySpiderForDomainDotCom

我仍然想从命令行调用 shell。但是现在scrapy尝试使用/加载我的蜘蛛(文档说它是这样做的)并且我得到一个错误,说蜘蛛没有参数。 我的问题是当蜘蛛必须接收参数时如何从命令行调用 shell?

我已经尝试了一些东西和组合,搜索了网络,但什么都没有......

PS:scrapy 0.22.2

PS2:我不想从我的蜘蛛中调用 shell。

【问题讨论】:

  • 看看doc.scrapy.org/en/latest/topics/debug.html#scrapy-shell。你可以在你的蜘蛛回调中调用 shell,你可以使用scrapy crawl -a arg1=one MySpiderForDomainDotCom 来调用它
  • 我知道。我不想从我的蜘蛛调用 shell。这很痛苦。这就像测量温度一样。我不想建立一个气象站只是为了测量温度。就像我不想运行蜘蛛(它会做很多事情!)只是为了找出一些 xpath。
  • scrapy shell 可以采用--spider 参数,但不幸的是蜘蛛创建没有传递任何其他参数,例如与scrapy crawl 相反。你可以通过调用crawler.spiders.create(spidername, **args) 来做到这一点
  • Ja,这证实了不可能做我想做的事......谢谢!

标签: scrapy


【解决方案1】:

简单的解决方案是简单地调用:

$ scrapy shell

从命令行,一旦控制台启动:

>>> fetch('http://www.domain.com/whatever')

scrapy shell 命令将加载您在 settings.py 中定义的所有设置。这不会启动任何蜘蛛。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    相关资源
    最近更新 更多