从 Wikidata API 获取 python 中的项目标签
Get itemlabel in python from Wikidata API
我正在尝试使用 Wikidata API 创建一个包含所有哈利波特角色名称的列表。我想从下面的 link 中获取项目标签(角色名称)到我的 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)
即使我在查询末尾指定了 JSON,结果仍然在 XML 而不是 JSON 中返回。任何有关如何解决此问题的想法都将不胜感激。
是的,您仍然得到 xml。
要请求 JSON 响应,请将 header 添加到您的请求中,如下所示:
headers = {"Accept" : "application/json"}
r2 = requests.get(hpCharURL, headers=headers)
r2.json()
有一个方便的包可以从 wikipeidia 获取数据。检查一下https://pypi.python.org/pypi/wikipedia
我正在尝试使用 Wikidata API 创建一个包含所有哈利波特角色名称的列表。我想从下面的 link 中获取项目标签(角色名称)到我的 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)
即使我在查询末尾指定了 JSON,结果仍然在 XML 而不是 JSON 中返回。任何有关如何解决此问题的想法都将不胜感激。
是的,您仍然得到 xml。
要请求 JSON 响应,请将 header 添加到您的请求中,如下所示:
headers = {"Accept" : "application/json"}
r2 = requests.get(hpCharURL, headers=headers)
r2.json()
有一个方便的包可以从 wikipeidia 获取数据。检查一下https://pypi.python.org/pypi/wikipedia