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

标签 python web-scraping scrapy

我将我的 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)

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

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

global idd
idd = i

start_requests 方法中,然后

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

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

如何解决这个问题?

最佳答案

一个(可能也是最简单的)选择是将其传递到 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"]

关于python - 如何在 Scrapy 中使用全局变量解析响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31925629/

相关文章:

python - 如何从 Python 3 导入 FileNotFoundError?

python - 在超过 4 个条件下使用列表理解

javascript - 使用 C# 执行 JavaScript 页面

Python BeautifulSoup 从 header 中提取数据

python - 为什么配置 NTLM 中间件后 Scrapy 无法获取我的 URL?

python - 应如何取消 Twisted AMP 延迟?

python - 子图未正确填充

python - 如何使用scrapy获取匹配的行号

python - 如何更改 scrapy view 命令使用的浏览器?

python - 使用 Scrapy 获取类名