Scrapy警告我有多个同名的蜘蛛。正如下面的终端输出所解释的,我不知道为什么。
(env) MacBook-Air:scrapy_project username$ find . -name "*.pyc" -exec rm -f {} \;
(env) MacBook-Air:scrapy_project username$ grep -rl name_of_spider .
./bot/spiders/vendors/name_of_spider.py
(env) MacBook-Air:scrapy_project username$ scrapy crawl name_of_spider
/Users/username/scrapy_project/env/lib/python3.7/site-packages/scrapy/spiderloader.py:36: UserWarning: There are several spiders with the same name:
NameOfSpiderSpider named 'name_of_spider' (in bot.spiders.vendors.name_of_spider)
NameOfSpiderSpider named 'name_of_spider' (in bot.spiders.vendors.name_of_spider)
This can cause unexpected behavior.
warnings.warn(msg, UserWarning)发布于 2021-01-08 01:19:01
我不确定这是否是你的情况,但也许它会帮助其他人,因为我在谷歌上搜索了警告消息,但没有找到太多相关的帮助。
tl;dr:检查settings.py__中SPIDER_MODULES中的路径,如果列表中有spiders的子文件夹,这些子文件夹蜘蛛会被抓取加载程序多次发现。
My case:我在spiders/目录中有多个爬行器,然后在spiders/grouped/子文件夹中有一堆其他爬行器,它们是从抽象/基本爬行器(在spiders/grouped/__init__.py中)继承的。
spiders
├── a.py
├── b.py
├── __init__.py
└── grouped
├── c.py
├── d.py
└── __init__.py我曾经认为我需要在settings.py中指定SPIDER_MODULES中的所有子文件夹,如下所示:
SPIDER_MODULES = ["my_scraper.spiders", "my_scraper.spiders.grouped"]但是装载器会递归地找到所有的爬行器,所以正确的方法应该是:
SPIDER_MODULES = ["my_scraper.spiders"]https://stackoverflow.com/questions/61598193
复制相似问题