如何定义scrapy shell使用哪个爬虫?

8 投票
3 回答
1846 浏览
提问于 2025-04-16 20:43

我正在尝试使用 Scrapy 的命令行工具测试一些 XPath,但它似乎在调用我那个还没完成的爬虫模块来抓取数据,这可不是我想要的。我想知道有没有办法指定 Scrapy 在命令行工具中使用哪个爬虫?更重要的是,Scrapy 为什么会这样做?难道它不知道这个爬虫还没准备好用吗?我不就是为了测试才用命令行工具的吗?要不然我就直接用

scrapy crawl spider_name

如果我想用一个特定的爬虫。

补充:我查了很久爬虫的文档,发现了关于在命令行工具中使用的爬虫实例的描述。

爬虫 - 处理这个 URL 的爬虫,或者如果没有找到合适的爬虫,就会使用一个 BaseSpider 对象。

这意味着,Scrapy 把这个 URL 和我的爬虫关联起来了,而不是用 BaseSpider。不幸的是,我的爬虫还没准备好测试,那有没有办法强制它在命令行工具中使用 BaseSpider 呢?

3 个回答

1

你需要修改你的设置文件来更改 DEFAULT_ITEM_CLASS

根据文档的说明:

这是在 Scrapy shell 中创建项目时会使用的默认类。

1

这个shell并不是用来和爬虫一起使用的:

你可以很快地尝试和调试你的抓取代码,而不需要运行爬虫。... [它] 是用来测试XPath表达式的。

7

Scrapy会根据allowed_domains这个属性自动选择要使用的爬虫。如果某个域名有多个爬虫,Scrapy会使用BaseSpider这个爬虫。

不过,这其实只是一个Python的命令行,你可以随意创建你想要的爬虫。

>>> from myproject.spiders.myspider import MySpider
>>> spider = MySpider()
>>> spider.parse_item(response)

补充说明:如果你不想使用你的爬虫,可以把allowed_domains = []设置为空。

撰写回答