从Wikidata API获取python中的itemlabel

时间:2016-03-14 16:58:59

标签: python json xml wikidata wikidata-api

我正在尝试使用维基数据API创建包含所有哈利波特角色名称的列表。我想从下面的链接中获取itemlabels(字符名称)到我的Python笔记本中。

以下是维基数据查询服务查询,它按我的意愿运行。

import requests
import json
hpCharURL = "https://query.wikidata.org/sparql?query= SELECT DISTINCT 
?item ?itemLabel WHERE { {?item wdt:P31 ?sub1 . 
?sub1 (wdt:P279|wdt:P131)* wd:Q95074 . 
?item wdt:P1080 ?sub2 . 
?sub2 (wdt:P279|wdt:P131)* wd:Q5410773 } 
SERVICE wikibase:label { bd:serviceParam wikibase:language 'en' . }} 
&format = JSON"
r2 = requests.get(hpCharURL)
r2.json()

运行上面的最后一行代码后,我一直收到此错误:

JSONDecodeError: Expecting value: line 1 column 1 (char 0)

结果仍然以XML而不是JSON回归,即使我在查询结束时指定了JSON。如何解决这个问题的任何想法将不胜感激。

2 个答案:

答案 0 :(得分:2)

是的,你还在使用xml。

要请求JSON响应,请在请求中添加标头,如下所示:

headers = {"Accept" : "application/json"}
r2 = requests.get(hpCharURL, headers=headers)
r2.json()

答案 1 :(得分:0)

有一个从wikipeidia获取数据的方便包。检查https://pypi.python.org/pypi/wikipedia