【问题标题】:Get itemlabel in python from Wikidata API从 Wikidata API 在 python 中获取 itemlabel
【发布时间】:2016-03-14 16:58:59
【问题描述】:

我正在尝试使用 Wikidata API 创建一个包含所有哈利波特角色名称的列表。我想从下面的链接中获取项目标签(字符名称)到我的 Python 笔记本中。

这是我想要运行的 Wikidata 查询服务查询。

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。任何有关如何解决此问题的想法将不胜感激。

【问题讨论】:

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


【解决方案1】:

是的,您仍在获取 xml。

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

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

【讨论】:

  • 我把第二行改成了下面,它工作了! r2 = requests.get(hpCharURL, headers=headers)
  • 修复了我的回答问题
  • 哦,好的,你发现了我的错误。如果问题得到解决,请接受答案。
【解决方案2】:

有一个方便的包可以从维基百科获取数据。检查它https://pypi.python.org/pypi/wikipedia

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 2022-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    相关资源
    最近更新 更多