我正在使用urllib.request.urlopen来获取如下所示的JSON响应:
{
"batchcomplete": "",
"query": {
"pages": {
"76972": {
"pageid": 76972,
"ns": 0,
"title": "Title",
"thumbnail": {
"original": "https://linktofile.com"
}
}
}
}
获得回复的相关代码:
response = urllib.request.urlopen("https://example.com?title="+object.title)
data = response.read()
encoding = response.info().get_content_charset('utf-8')
json_object = json.loads(data.decode(encoding))
我试图检索"原始"的值,但我很难到达那里。
我可以做print(json_object['query']['pages']
但是一旦我做print(json_object['query']['pages'][0]
我遇到了一个KeyError:0。
如何通过python检索original
的值?
答案 0 :(得分:2)
请改为:
my_content = json_object['query']['pages']['76972']['thumbnail']['original']
原因是,只有当您将列表作为对象时,才需要将index
称为[0]
。但在您的情况下,每个项目都是dict
类型。您需要指定key
而不是index
如果数字是动态的,您可以这样做:
page_content = json_object['query']['pages']
for content in page_content.values():
my_content = content['thumbnail']['original']
其中my_content
是必填信息。
答案 1 :(得分:0)
正在寻找那个不存在的密钥[0]
。假设您并不总是知道页面的键是什么,请试试这个:
pages = json_object['query']['pages']
for key, value in pages.items(): # this is python3
original = value['thumbnail']['original']
如果你知道(似乎是)pageid
:
json_object['query']['pages']['76972']['thumbnail']['original']
答案 2 :(得分:0)
您可以迭代键:
for page_no in json_object['query']['pages']:
page_data = json_object['query']['pages'][page_no]