Как запустить 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.