Scrapy KeyError - Не могу найти паука

У меня есть проект Scrapy, который не будет выполняться с scrapy crawl <spider-name> из командной строки.

Я только что перешел в новую среду разработки на Ubuntu 16.04, поэтому я хотел еще раз проверить, что проблема не в моих настройках. Для этого я создал чистую виртуальную среду с virtualenvwrapper с помощью python 2.7.12 и следовал инструкциям учебника из документов Scrapy. (v1.1 для имитации моего другого проекта).

Несмотря на новую среду, я все еще вижу странное поведение от скрапа, где оно не будет:

  • перечислить пауков scrapy list
  • список настроек scrapy settings
  • начать ползать scrapy crawl quotes

scrapy crawl quotes возникает следующая ошибка:

2017-01-06 14:20:50 [scrapy] INFO: Scrapy 1.1.1 started (bot: scrapybot)
2017-01-06 14:20:50 [scrapy] INFO: Overridden settings: {}
Traceback (most recent call last):
  File "/home/alan/QueryClick/.virtualenvs/test/bin/scrapy", line 11, in <module>
    sys.exit(execute())
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 142, in execute
    _run_print_help(parser, _run_command, cmd, args, opts)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 88, in _run_print_help
    func(*a, **kw)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/cmdline.py", line 149, in _run_command
    cmd.run(args, opts)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/commands/crawl.py", line 57, in run
    self.crawler_process.crawl(spname, **opts.spargs)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/crawler.py", line 162, in crawl
    crawler = self.create_crawler(crawler_or_spidercls)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/crawler.py", line 190, in create_crawler
    return self._create_crawler(crawler_or_spidercls)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/crawler.py", line 194, in _create_crawler
    spidercls = self.spider_loader.load(spidercls)
  File "/home/alan/QueryClick/.virtualenvs/test/local/lib/python2.7/site-packages/scrapy/spiderloader.py", line 43, in load
    raise KeyError("Spider not found: {}".format(spider_name))
KeyError: 'Spider not found: quotes'

Моя структура каталогов:

└── tutorial
    ├── scrapy.cfg
    └── tutorial
        ├── __init__.py
        ├── items.py
        ├── pipelines.py
        ├── settings.py
        └── spiders
            ├── __init__.py
            └── quote_spider.py

Я также дважды проверил все свои системные требования, как указано в документации по Scrapy. Эта проблема повторяется в моей команде на Ubuntu 14.04, следуя тем же шагам с virtualenv и идентичной моей настройке.

Если кто-то может пролить свет на это, я буду вечно благодарен.


Редактировать: Добавление settings.py

Единственные вещи, которые активны в settings.py являются:

BOT_NAME = 'tutorial'
SPIDER_MODULES = ['tutorial.spiders']
NEWSPIDER_MODULE = 'tutorial.spiders'
ROBOTSTXT_OBEY = True

Изменить: Обмен scrapy.cfg

# Automatically created by: scrapy startproject
#
# For more information about the [deploy] section see:
# https://scrapyd.readthedocs.org/en/latest/deploy.html

[settings]
default = tutorial.settings

[deploy]
#url = http://localhost:6800/
project = tutorial

1 ответ

Убедитесь , что ваш паук -.py, если он создан, например, из jupyter, это может быть.ipynb, который не будет поднят.

Это был конфликт с некоторыми переменными среды, которые были установлены для проекта django, который вызывает паука - они были разделены именами SCRAPY_ и должно быть было противоречивым.

Изменить: Для справки: GitHub проблема недокументированных переменных среды

Другие вопросы по тегам