我定义了一个名为=' 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()
感谢您提前寻求帮助!
答案 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