Scrapy Spider не найдена ошибка - PullRequest
29 голосов
/ 26 марта 2012

Это Windows 7 с python 2.7

У меня есть проект scrapy в каталоге caps (это где scrapy.cfg)

Мой паук находится в caps \ caps \spiders \ campSpider.py

Я вхожу в проект scrapy и пытаюсь запустить

scrapy crawl campSpider -o items.json -t json

Я получаю сообщение об ошибке, что паук не может быть найден.Имя класса равно campSpider

...
    spider = self.crawler.spiders.create(spname, **opts.spargs)
  File "c:\Python27\lib\site-packages\scrapy-0.14.0.2841-py2.7-win32.egg\scrapy\spidermanager.py", l
ine 43, in create
    raise KeyError("Spider not found: %s" % spider_name)
KeyError: 'Spider not found: campSpider'

Не указан ли какой-либо элемент конфигурации?

Ответы [ 12 ]

48 голосов
/ 27 марта 2012

Убедитесь, что вы установили свойство "name" паука. Пример:

class campSpider(BaseSpider):
   name = 'campSpider'

Без свойства name менеджер по лечению не сможет найти вашего паука.

24 голосов
/ 11 ноября 2012

Также убедитесь, что ваш проект не называется scrapy! Я сделал эту ошибку и переименовал ее исправил проблему.

3 голосов
/ 27 марта 2012

Вы установили параметр SPIDER_MODULES ?

SPIDER_MODULES

По умолчанию: []

Список модулей, где Scrapy будет искать пауков.

Пример:

SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

2 голосов
/ 17 января 2018

Попробуйте запустить scrapy list в командной строке.Если на пауке есть какая-либо ошибка, он обнаружит ее.

В моем случае я прямо скопировал код из другого проекта и забыл изменить имя проекта из импорта в модуль паука

2 голосов
/ 16 октября 2015

Вы должны дать имя своему пауку.

Однако BaseSpider является устаревшим , вместо него используйте Spider .

from scrapy.spiders import Spider
class campSpider(Spider):
   name = 'campSpider'

Проект должен был быть созданкоманда startproject:

scrapy startproject project_name

, которая дает следующее дерево каталогов:

project_name/
    scrapy.cfg            # deploy configuration file

    project_name/             # project's Python module, you'll import your code from here
        __init__.py

        items.py          # project items file

        pipelines.py      # project pipelines file

        settings.py       # project settings file

        spiders/          # a directory where you'll later put your spiders
            __init__.py
            ...

Убедитесь, что settings.py имеетопределение вашего модуля паука.Например:

BOT_NAME = 'bot_name' # Usually equals to your project_name 

SPIDER_MODULES = ['project_name.spiders']
NEWSPIDER_MODULE = 'project_name.spiders'

У вас не должно возникнуть проблем при запуске вашего паука локально или на ScrappingHub .

1 голос
/ 15 июня 2018

Для тех, у кого может быть такая же проблема, не только вам нужно установить name паука и проверить SPIDER_MODULES и NEWSPIDER_MODULE в настройках scrapy, если вы используете службу scrapyd, вам также нужно перезапустить, чтобы применить любое внесенное вами изменение

1 голос
/ 31 марта 2014

убедитесь, что ваш файл паука сохранен в вашем каталоге паука.сканер ищет имя паука в каталоге паука

0 голосов
/ 09 июля 2019

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

my_class(scrapy.Spider):
0 голосов
/ 04 июля 2019

В моем случае я установил «LOG_STDOUT = True», и scrapyd не может вернуть результаты в ответ json, когда вы ищете своих пауков с «/listspiders.json». И вместо этого результаты печатаются в файлы журналов, которые вы установили в файле scrapyd default_scrapyd.conf. Итак, я изменил настройки, как это, и это работало хорошо.

LOG_STDOUT = False
0 голосов
/ 28 февраля 2019

без использования проекта runspider и fileName с использованием обхода проекта и примера имени: C/user> scrapy runspider myFile.py

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...