好的,我试图从维基数据中获取有关电影的信息,以此电影为例:https://www.wikidata.org/wiki/Q24871
在页面上,数据以可读格式清晰显示,但是当您尝试通过API提取数据时,您会得到以下信息:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q24871
以下是其中一节:
{{1}}
问题是我不确定如何将这样的部分转换为可读文本。我得到API使用唯一ID调用类及其属性之间的链接,但我仍然卡住了。
目前这实际上是可行的,还是我在错误的树上咆哮?
答案 0 :(得分:18)
您应该寻找的是每个语句中的numeric-id
,并添加一个前导Q
来恢复您的wikidata ID,这应该会导致['Q775450', 'Q3041294', 'Q646968', 'Q434841', 'Q11920']
[更新:您现在可以直接访问mainsnak.datavalue.value.id
的Q ID,而不必从numeric-id
建立
这可以使用wikidata-sdk(我开发的JS lib)simplifyClaims
function
获得这些ID后,您只需使用wbgetentities
API请求实体标签:
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels
您甚至可以使用languages
参数获取某些语言的结果:https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q775450|Q3041294|Q646968|Q434841|Q11920&format=json&props=labels&languages=en|de|fr
答案 1 :(得分:0)
好的,所以我没有找到使用的解决方案。这是“wbgetentities”系统我发现你可以使用“parse”命令来获取html结构。
https://www.wikidata.org/w/api.php?action=parse&page=Q24871
虽然它仍然需要一些处理,但比以前的解决方案更容易。
答案 2 :(得分:0)
我看到了一个可以接受的答案,但最初对该问题的解释有所不同。基本上要求在Wikidata项目页面上看到在JSON中具有相同的输出。
我使用Wikidata Query Front End来直接查询并检查结果。然后使用</> Code
按钮...解释为什么您在上方看到这么多不必要的空格。
另请参阅: