Size: a a a

2021 April 07

Р

Ромаша in Scrapy
ага, нашел уже, изучаю) спасибо!
источник
2021 April 08

NZ

Nikita Zhidkov in Scrapy
Привет, подскажите, пожалуйста, можно ли как-то в setting.py менять настройки в зависимости от аргументов при запуске краулера?
источник

NZ

Nikita Zhidkov in Scrapy
Немного переформулирую, мне нужно прокинуть в settings.py значения, и уже в самом файле писать if my_param: и тд
источник

МС

Михаил Синегубов... in Scrapy
так, что надо сделать
1. при старте паука менять значения в setting.py
2. во время работы паука использовать значения из setting.py

это два совершенно разных вопроса
источник

NZ

Nikita Zhidkov in Scrapy
при старте паука менять значения в setting.py
источник

МС

Михаил Синегубов... in Scrapy
1. при старте из коммандной строки -  https://docs.scrapy.org/en/latest/topics/settings.html#command-line-options
2. при старте из другого скрипта - https://docs.scrapy.org/en/latest/topics/practices.html#run-scrapy-from-a-script
источник

МС

Михаил Синегубов... in Scrapy
п.2 - сам найди на странице
источник

МС

Михаил Синегубов... in Scrapy
это не "менять", а "задать"
источник

NZ

Nikita Zhidkov in Scrapy
Эти варианты видел, но вопрос в том что мне нужно менять settings.py при запуске паука в зависимости от переданных параметров. Мне нужен первый вариант, но будет ли аргумент который я передам сразу доступен при импорте settings.py? Грубо говоря допустим у меня есть 2 пайплайна который описаны в ITEM_PIPELINES, и зависимости от параметра я хочу установить один или другой
источник

NZ

Nikita Zhidkov in Scrapy
Тоесть я запускаю паука scrapy crawl 'spider_name' -s USE_SELENIUM=use
и settings.py у меня есть
if USE_SELENIUM=='use':
   DOWNLOADER_MIDDLEWARES = {
       'parsers.middlewares.SeleniumMiddleware': 543
   }
и код падает по ошибке что нет переменной USE_SELENIUM. Соответственно вопрос - как её туда передать при старте краулера
источник

NZ

Nikita Zhidkov in Scrapy
С точки зрения архитектуры скрапи, похоже правильно использовать custom_settings в классе паука, и там задать что я хочу, однако всёравно не понятно, как поменять DOWNLOADER_MIDDLEWARES в зависимости от переданного аргумента при старте паука.
источник

i

i in Scrapy
Покажи стектрейс полный с падением этого use selenium.
источник

i

i in Scrapy
А вообще, запускай из скрипта тогда, и там уже задавай условия.
источник

NZ

Nikita Zhidkov in Scrapy
источник

i

i in Scrapy
хотя, возможно прокатит просто задать этот use_selenium как пустое или какое-то дефолтное значение. Чтобы потом скрапи его на старте переопределял твоим 'use'. А тут как я понял он сначала пробегает settings.py, и не находит там изначальную переменную.
источник

NZ

Nikita Zhidkov in Scrapy
импорты так не работают насколько я знаю
источник

NZ

Nikita Zhidkov in Scrapy
вариант с custom_settings мне пока подойдёт, но конечно слабо верится что не продуман вариант с динамической настройкой параметров, что-то да есть я думаю
источник

i

i in Scrapy
видать тебе придется от скрипта работать, т.к. условия подобные в settings.py сработают только от твоих внешних данных. Либо ты можешь прямо определять DOWNLOADER_MIDDLEWARES на вызове, тогда прокатит.
источник

NZ

Nikita Zhidkov in Scrapy
да про settings.py уже забыли, есть custom_settings, проблема в том что скрапи читает его перед инициализаций класса паука
источник

NZ

Nikita Zhidkov in Scrapy
и соответственно через init не прокатит его менять в зависимости от аргументов которые я передаю при старте
источник