Мне потребовалось некоторое время, чтобы понять это, но на самом деле все было в Core API описании метода.
Это решение, вероятно, не является оптимальным, так как я получаю параметр freqот паука, но можно было бы получить его непосредственно от сканера, если у кого-то есть лучшее решение.
Таким образом, конвейер выглядит следующим образом:
class Pipeline(object):
def __init__(self, freq):
self.freq = freq
@classmethod
def from_crawler(cls, crawler):
return cls(freq=crawler.spider.data_test)
def open_spider(self, spider):
return
def process_item(self, item, spider):
print("Freq:{}\n".format(self.freq))
def close_spider(self, spider):
return
То, что вам нужно сделать, это заключитьпеременные, которые вы хотите передать в конвейер в cls
, дать им имя и в __init__
сохранить их как атрибут класса.Чтобы иметь возможность получить его от паука, я должен был сохранить его также с атрибутом в пауке:
class TestSpider(scrapy.Spider):
name = "test"
def __init__(self, freq):
self.freq = freq
Если у вас есть некоторые улучшения в этом решении, не стесняйтесь комментировать или предлагать лучшее,Я знаю, что это не оптимально.