如何在Scrapy中使用全局变量解析响应?

时间:2015-08-10 17:26:03

标签: python web-scraping scrapy scrapy-spider

我将 start_requets 方法修改为:

def start_requests(self):
    array = list(open("file", 'r'))
    for i in array:
        yield self.make_requests_from_url("http://example.org/test.php?id=" + i)

如何在解析方法中访问i的值?

我尝试设置全局变量 idd 并添加

global idd
idd = i
start_requests 方法中

,然后

def parse(self, response):
    item = DataItem()
    item['id'] = idd

但是所有项目的id字段都填充了idd的最后一个值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

一个(也可能是最简单的)选项是将其传递到meta

yield scrapy.Request("http://example.org/test.php?id=" + i, 
                     meta={"index": i},
                     dont_filter=True)

然后,在parse()中阅读:

def parse(self, response):
    index = response.meta["index"]