我使用维基百科的API来获取有关页面的信息.
API给了我这样的
JSON:
"query":{
"pages":{
"188791":{
"pageid":188791,
"ns":0,
"title":"Vanit\u00e9",
"langlinks":[
{
"lang":"bg",
"*":"Vanitas"
},
{
"lang":"ca",
"*":"Vanitas"
},
ETC.
}
}
}
}
你可以看到the full JSON response.
我想获得所有条目,如:
{
"lang":"ca",
"*":"Vanitas"
}
但是页面对象中的数字键(“188791”)是问题所在.
我发现Find a value within nested json dictionary in python解释了我如何枚举值.
不幸的是我得到以下异常:
TypeError: 'dict_values' object does not support indexing
我的代码是:
json["query"]["pages"].values()[0]["langlinks"]
这可能是一个愚蠢的问题,但我找不到传递页面id值的方法.
最佳答案 只要您一次只查询一个页面,
Simeon Visser’s answer就可以正常工作.但是,作为一个好的风格,我建议您构建代码,以便迭代所有返回的结果,即使您知道应该只有一个:
for page in data["query"]["pages"].values():
title = page["title"]
langlinks = page["langlinks"]
# do something with langlinks...
特别是,通过这种方式编写代码,如果您发现自己需要为多个页面运行查询,则可以使用单个MediaWiki API请求高效地执行此操作.