我可以在不同的过程(并行)中运行不同设置的scrapy spider吗?

时间:2016-10-11 03:02:27

标签: scrapy

我定义了一个名为=' myspider'的蜘蛛,根据设置它的行为会有所不同。我想在不同的过程中运行带有不同实例的蜘蛛,是否可能?

我检查源代码,似乎SpiderLoader只是走了蜘蛛模块,我可以一次运行一个同名的蜘蛛。

运行代码似乎:

initWithCoder:

当然,错误显示:

for item in items:
    settings = get_project_settings()
    settings.set('item', item)
    settings.set('DEFAULT_REQUEST_HEADERS', item.get('request_header'))
    process = CrawlerProcess(settings)
    process.crawl("myspider")
    process.start()

感谢您提前寻求帮助!

1 个答案:

答案 0 :(得分:0)

无法在运行时更改设置。 我建议你使用spider参数将不同的变量传递给spider。

def __init__(self, **kw):
    super(MySpider, self).__init__(**kw)
    self.headers = kw.get('request_headers')
    ...
yield scrapy.Request(url='www.example.com', headers=self.headers)

为此,您必须覆盖蜘蛛的 init 功能才能接受这些变量。并将request_header传递给您在spider中使用的每个Request对象。

config.vm.provider "virtualbox" do |vb|
    config.vm.network "private_network", :type => 'dhcp', :name => 'vboxnet0', :adapter => 2
end