Я пишу python программу, которая нуждается в данных из inte rnet. Поэтому я написал несколько пауков Scrapy, которые собираются на нескольких страницах и очищают данные. После этого они хранят данные в файле Excel, который является моей базой данных. Для этого я написал собственный класс, который обрабатывает данные в файле Excel так, как мне нужно. Так что это работает. Теперь на мой вопрос:
Я хочу, чтобы пауки запускались с другого python сценария. Я нашел некоторый код, чтобы быть в состоянии сделать это. Но мне также нужно импортировать все настройки из проекта Scrapy и конвейеров, элементы и т. Д. c. также. Я не могу использовать
get_project_settings()
, потому что скрипт находится в другом каталоге (папка проекта Scrapy находится в том же каталоге, что и скрипт, с которого я хочу его запустить): Вот что я получил до сих пор:
from scrapy.crawler import CrawlerProcess
from desktop.Project.bots.question.spider import spider_test
process = CrawlerProcess(settings={'Here I need to import the settings file from the spiders Project' })
process.crawl(spider_test)
process.start()
Паук работает, но мне нужны мои настройки. Он работает совершенно нормально, когда я помещаю этот скрипт в ту же папку проекта, в которой находятся мои настройки, и использую следующий код:
from scrapy.crawler import CrawlerProcess
from desktop.question.spider import spider_test
process = CrawlerProcess(get_project_settings())
process.crawl(spider_test)
process.start()
Я также не хочу переписывать все настройки из файла настроек в качестве dict и реализовать его вручную следующим образом:
process = CrawlerProcess(settings={
"FEEDS": {
"items.json": {"format": "json"},
},
})
Последний код является просто примером из документов Scrapy, очевидно, мне не нужен никакой экспортер. Я уже пытался просто импортировать нужный мне файл настроек и установить его в качестве параметра настроек, но для настроек параметров нужен тип словаря python.
process = CrawlerProcess(settings={})
Я действительно надеюсь, что кто-нибудь может помочь мне объяснить, как решить проблему.