我想在代码中直接覆盖spider的输出格式。我无法修改设置;我无法更改命令行。我想在__init__
方法中做到这一点。
理想情况下,即使将类似-o /tmp/1.csv
的内容传递给蜘蛛,新输出格式也应该有效。但如果不可能,那就通过它。
我该怎么做?
谢谢。
答案 0 :(得分:1)
因此,您可以在蜘蛛中放置一个自定义属性,设置如何为此蜘蛛处理数据,并创建一个尊重该配置的Scrapy item pipeline。
您的蜘蛛代码如下所示:
from scrapy import Spider
class MySpider(Spider):
def __init__(self, *args, **kwargs):
super(MySpider, self).__init(*args, **kwargs)
self.data_destination = self._get_data_destination()
def _get_data_destination(self):
# return your dynamically discovered data destination settings here
你的item pipeline就像是:
class MySuperDuperPipeline(object):
def process_item(self, item, spider):
data_destination = getattr(spider, 'data_destination')
# code to handle item conforming to data destination here...
return item