2016-03-14 75 views
2

我正在嘗試使用Wikidata API創建一個包含所有哈利波特字符名稱的列表。我想從下面的鏈接中獲取item標籤(字符名稱)到我的Python筆記本中。從Wikidata API獲取Python中的itemlabel

這裏是因爲我想它運行的維基數據查詢服務的鏈接:我不斷收到此錯誤運行代碼的最後線以上後http://tinyurl.com/jllb3gz

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。任何想法如何解決這個將不勝感激。

回答

0

是的,你仍然得到XML。

要請求JSON響應,添加頁眉您的要求,就像這樣:

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

我改變了第二行到下面,它的工作! 'r2 = requests.get(hpCharURL,headers = headers)' – zfa

+0

修復了我的回答問題 – pholtz

+0

哦,好吧,你發現我的錯誤。如果問題得到解決,請接受答案。 – pholtz