Я пытаюсь использовать CrawlerProcess для одновременного запуска нескольких Scrapy Spiders, но не уверен в структуре файла. Оба паука работают правильно, когда запускаются индивидуально через scrapy crawl indeed
и scrapy crawl monster
(обозначенные имена классов моего паука).
Моя текущая структура файла выглядит следующим образом:
- scrapy
- tutorial
- spiders
- __init__.py
- indeed_spider.py
- monster_spider.py
- __init__.py
- crawler.py
- functions.py
- items.py
- middlewares.py
- pipelines.py
- settings.py
- scrapy.cfg
Как вы можете видите, у меня есть crawler.py в основной директории tutorial .
Код для crawler.py выглядит следующим образом:
from scrapy.crawler import CrawlerProcess
from tutorial.spiders.indeed_spider import IndeedSpider
from tutorial.spiders.monster_spider import MonsterSpider
from scrapy.utils.project import get_project_settings
settings = get_project_settings()
process = CrawlerProcess(settings)
process.crawl(IndeedSpider)
process.crawl(MonsterSpider)
process.start()
Когда я вхожу в каталог tutorial и запускаю python crawler.py
, я получаю следующее сообщение об ошибке:
Traceback (most recent call last):
File "crawler.py", line 3, in <module>
from tutorial.spiders.indeed_spider import IndeedSpider
ModuleNotFoundError: No module named 'tutorial'
Это странно, поскольку tutorial
модуль. В документации Scrapy нет ничего о файловой структуре и запуске нескольких пауков одновременно; он дает базовый c пример, который немного помогает ( crawler do c).
Мои вопросы:
- Как выполнить несколько пауки через
CrawlerProcess
в командной строке? Это не scrapy crawl {spider_name}
. Я предполагаю, что это python crawler.py
, но это не сработало, учитывая мою текущую структуру. - Где хранить
crawler.py
в каталоге проекта? - Является ли дальнейшая манипуляция
pipelines.py
или settings.py
требуется для инициации CrawlerProcess
?
Большое спасибо за помощь!