Scrapy - Запуск нескольких пауков одновременно - CrawlerProcess - Структура файла - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь использовать 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?

Большое спасибо за помощь!

...