Просто используйте settings.get
например
print(self.settings.get('SETTING_NAME'))
напечатает
SETTING_VAL
Если вы хотите получить доступ к настройке в вашем пауке __init__
у вас естьпара вариантов. Если параметры командной строки являются просто аргументом spider
, используйте -a
вместо -s
. Если по какой-то причине вам необходим доступ к фактическим настройкам вашего паука __init__
, вам необходимо переопределить from_crawler
classmethod
, как описано в документах .
Вотпример:
import scrapy
class ArgsSpider(scrapy.Spider):
name = "my_spider"
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
print('kwargs =', kwargs)
@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
spider = cls(
*args,
my_setting=crawler.settings.get("MY_SETTING"),
**kwargs
)
spider._set_crawler(crawler)
return spider
запустите, например, scrapy runspider args_spider.py -s MY_SETTING=hello,world!
, и вы увидите настройки в диктовке kwargs
. Конечно, вы можете получить и другие настройки таким же образом