Я пытаюсь использовать CrawlerProcess для одновременного запуска нескольких Scrapy Spider, но не уверен в файловой структуре. Оба паука работают правильно, когда запускаются индивидуально через 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 нет ничего о файловой структуре и одновременном запуске нескольких пауков; он дает простой пример, который мало помогает (документ сканера).
Мои вопросы:
- Как запустить несколько пауков через
CrawlerProcess
в командной строке? Это неscrapy crawl {spider_name}
. Я предполагаю, что этоpython crawler.py
, но это не сработало с моей нынешней структурой. - Где следует хранить
crawler.py
в каталоге проекта? - Требуются ли дальнейшие манипуляции с
pipelines.py
илиsettings.py
для инициированияCrawlerProcess
?
Большое спасибо за помощь!
tutorial
каталог, иначе вы удаляетеtutorial
из путей импорта Python. Запуститеpython tutorial/crawler.py
или добавьте путь, содержащий папкуtutorial
, в переменную средыPYTHONPATH
. - person Gallaecio   schedule 28.04.2020