Как запустить scrapy через python скрипт?

Подскажите пожалуйста есть 5 проектов на scrapy, все лежат в одной папке мне. Мне нужно написать скрипт, который запускал бы все эти 5 проектов в интернете нашел, что к каждому проекту scrapy можно создать файл с следующим содержимым:

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())

process.crawl("mozgva")
process.start()

И тогда можно запускать паука, из "скрипта" если я запускаю через pycharm, то все работает. Но как только я пытаюсь запустить через терминал, выдает следующую ошибку

huston@huston:~/PycharmProjects/parsing_kviz/mozgva$ python run.py 
Traceback (most recent call last):
  File "run.py", line 1, in <module>
    from scrapy.crawler import CrawlerProcess
ImportError: No module named scrapy.crawler

У меня идея была такова: к каждому проекту scrapy я пишу файл(run.py) с вышеуказанным содержимым (что бы можно было запускать из скрипта).А потом пишу общий файл (start_arsing.py) где будут запускаться все run.py проектов scrapy start_arsing.py: import subprocess

subprocess.Popen(['python3', './mozgva/run.py'])

но идея моя не увенчалась успехом. Подскажите пожалуйста, как можно решить мою проблему ? пробывал писать bash:

#!/bin/bash

# Запуск Эйнштейн пати
# shellcheck disable=SC2164
cd eni/
scrapy crawl eni

# Запуск квиз-плиза
cd ../kviz_please/
scrapy crawl kviz_please


# Запуск Квизиума
cd ../kvizium_pars/
scrapy crawl kvizium


# Запуск Брэйнбой
cd ../brainboy/
scrapy crawl brainboy

# Запуск Мозгвы
cd ../mozgva/
scrapy crawl mozgva


# Запуск Сквиз
cd ../squiz/
scrapy crawl squiz

но bash тоже не работает:

huston@huston:~/PycharmProjects/parsing_kviz$ sh comands.sh 
Traceback (most recent call last):
  File "/usr/bin/scrapy", line 11, in <module>
    load_entry_point('Scrapy==1.7.3', 'console_scripts', 'scrapy')()
  File "/usr/lib/python3/dist-packages/scrapy/cmdline.py", line 145, in execute
    cmd.crawler_process = CrawlerProcess(settings)
  File "/usr/lib/python3/dist-packages/scrapy/crawler.py", line 267, in __init__
    super(CrawlerProcess, self).__init__(settings)
  File "/usr/lib/python3/dist-packages/scrapy/crawler.py", line 145, in __init__
    self.spider_loader = _get_spider_loader(settings)
  File "/usr/lib/python3/dist-packages/scrapy/crawler.py", line 347, in _get_spider_loader
    return loader_cls.from_settings(settings.frozencopy())
  File "/usr/lib/python3/dist-packages/scrapy/spiderloader.py", line 61, in from_settings
    return cls(settings)
  File "/usr/lib/python3/dist-packages/scrapy/spiderloader.py", line 25, in __init__
    self._load_all_spiders()
  File "/usr/lib/python3/dist-packages/scrapy/spiderloader.py", line 47, in _load_all_spiders
    for module in walk_modules(name):
  File "/usr/lib/python3/dist-packages/scrapy/utils/misc.py", line 73, in walk_modules
    submod = import_module(fullpath)
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
  File "<frozen importlib._bootstrap>", line 991, in _find_and_load
  File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "/home/huston/PycharmProjects/parsing_kviz/eni/eni/spiders/eni_spiders.py", line 3, in <module>
    from scrapy.http import JsonRequest
ImportError: cannot import name 'JsonRequest' from 'scrapy.http' (/usr/lib/python3/dist-packages/scrapy/http/__init__.py)

да и bash мне не совсем подходит, так как я хочу сделать докер контейнер, и запустить это дело крутиться в контейнере, и в контейнер сразу устанавливать на python, а не сначала ubuntu, а потом туда уже ставить python.


Ответы (0 шт):