说着,每次我跑得斗志旺盛的像下面
scrapy crawl [spidername] -a file='filename'
我想把文件名发送到pipeline来指定项的存储位置。每次的位置可能都不一样,所以它不能在settings.py中定义。该文件在蜘蛛中保存为私有变量
def __init__(self,file): self.filename=file
如何将参数发送到管道?
cyvaqqii1#
有几种方法可以做到这一点。一种方法是将文件名定义为蜘蛛的init()方法中的一个参数,然后在调用process_item()方法时将其作为参数传递给管道。另一种方法是将文件名定义为spider中的类变量,然后从管道中将其作为spider的属性进行访问。下面是一个使用类变量执行此操作的示例:
class MySpider(Spider): filename = 'filename' def __init__(self, *args,**kwargs): super(MySpider, self).__init__(*args,**kwargs) def parse(self, response): # do stuff def process_item(self, item, spider): item['filename'] = spider.filename return item
1条答案
按热度按时间cyvaqqii1#
有几种方法可以做到这一点。一种方法是将文件名定义为蜘蛛的init()方法中的一个参数,然后在调用process_item()方法时将其作为参数传递给管道。
另一种方法是将文件名定义为spider中的类变量,然后从管道中将其作为spider的属性进行访问。
下面是一个使用类变量执行此操作的示例: