如何定义scrapy shell使用哪种蜘蛛?

emi*_*ish 5 python web-crawler scrapy

我正在尝试使用 Scrapy shell 测试一些 XPath,但它似乎在调用我不完整的蜘蛛模块来进行抓取,这不是我想要的。有没有办法定义哪个蜘蛛scrapy与其外壳一起使用?更重要的是,为什么 Scrapy 这样做?它不应该知道蜘蛛还没有准备好使用吗?这就是我使用 shell 的原因吗?否则我会使用

scrapy crawl spider_name
Run Code Online (Sandbox Code Playgroud)

如果我想使用特定的蜘蛛。

编辑:在永远查看 Spider 文档后,我发现了以下关于 shell 中使用的蜘蛛实例的描述。

蜘蛛 - 已知处理 URL 的蜘蛛,如果当前 URL 没有找到蜘蛛,则为 BaseSpider 对象

这意味着,scrapy 已将 URL 与我的蜘蛛相关联,并使用它而不是 BaseSpider。不幸的是,我的蜘蛛还没有准备好进行测试,那么有没有办法强制它使用 BaseSpider 作为外壳呢?

Rol*_*Max 5

Scrapy 根据allowed_domains属性自动选择蜘蛛。如果给定域有多个蜘蛛,Scrapy 将使用BaseSpider.

但是,它只是一个 python shell,你可以实例化任何你想要的蜘蛛。

>>> 从 myproject.spider.myspider 导入 MySpider
>>> 蜘蛛 = MySpider()
>>> spider.parse_item(响应)

编辑:作为使用蜘蛛的解决方法,您可以设置allowed_domains = []