python - 从维基数据 API 获取 python 中的项目标签

标签 python json wikidata wikidata-api wikidata-query-service

我正在尝试使用维基数据 API 创建一个包含所有哈利波特角色名称的列表。我想从下面的链接中获取项目标签(字符名称)到我的 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。任何有关如何解决此问题的想法都将不胜感激。

最佳答案

是的,您仍在获取 xml。

要请求 JSON 响应,请向您的请求添加 header ,如下所示:

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

关于python - 从维基数据 API 获取 python 中的项目标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35993627/

相关文章:

python - python中的同时模拟

python - Tensorflow.strided_slice 缺少参数 'strides'?

json - 使用 Postman 将 JSON 请求对象中的日期对象设置为服务器

mysql - 在 MySQL 中按 id 从 JSON 过滤表

compare - SPARQL - 禁用按字母顺序比较实体 ID

python - 如何使用 pandas 模块将带有标题的表格导入数据框

python - 将独立的 sklearn GaussianMixture 对数概率分数转换为总和为 1 的概率

json - 如何在 serilog SQL 接收器中将属性数据记录为 JSON 而不是 XML

linux - 如何设置对 Blazegraph 服务器的远程访问?

sparql - 为什么查询子类的所有实例比查询 "parent"类获得更多结果?