首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >消除多个同名蜘蛛的抓取警告

消除多个同名蜘蛛的抓取警告
EN

Stack Overflow用户
提问于 2020-05-05 01:32:19
回答 1查看 164关注 0票数 0

Scrapy警告我有多个同名的蜘蛛。正如下面的终端输出所解释的,我不知道为什么。

代码语言:javascript
复制
(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)
EN

回答 1

Stack Overflow用户

发布于 2021-01-08 01:19:01

我不确定这是否是你的情况,但也许它会帮助其他人,因为我在谷歌上搜索了警告消息,但没有找到太多相关的帮助。

tl;dr:检查settings.py__中SPIDER_MODULES中的路径,如果列表中有spiders的子文件夹,这些子文件夹蜘蛛会被抓取加载程序多次发现。

My case:我在spiders/目录中有多个爬行器,然后在spiders/grouped/子文件夹中有一堆其他爬行器,它们是从抽象/基本爬行器(在spiders/grouped/__init__.py中)继承的。

代码语言:javascript
复制
spiders
├── a.py
├── b.py
├── __init__.py
└── grouped
    ├── c.py
    ├── d.py
    └── __init__.py

我曾经认为我需要在settings.py中指定SPIDER_MODULES中的所有子文件夹,如下所示:

代码语言:javascript
复制
SPIDER_MODULES = ["my_scraper.spiders", "my_scraper.spiders.grouped"]

但是装载器会递归地找到所有的爬行器,所以正确的方法应该是:

代码语言:javascript
复制
SPIDER_MODULES = ["my_scraper.spiders"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61598193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档