我正在收集一些俄语电影的数据,使用维基百科API,我可以以JSON格式查询有关所需电影的数据:
https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&titles=%s
其中%s
是文章的标题。
必需属性之一 - IMDb ID。这里的问题是并非所有文章都包含在 wiki 标记中(实际上是在电影模板中),而是始终呈现页面。
俄语版的电影模板说IMDb ID自动取自维基数据(英文版说拒绝这个信息框中的任何数据库,转而支持底部的链接部分)。
有没有办法使用维基百科API或维基数据API请求IMDb ID?
您可以通过维基数据查询服务获取所有具有IMDb ID并链接到ruwiki的维基数据电影项目:
SELECT ?item ?IMDb_ID ?sitelink WHERE {
?item wdt:P31 wd:Q11424 .
?item wdt:P345 ?IMDb_ID .
?sitelink schema:about ?item ; schema:isPartOf <https://ru.wikipedia.org/> .
}
或
https://query.wikidata.org/bigdata/namespace/wdq/sparql?format=json&query=SELECT+?item+?IMDb_ID+?sitelink+WHERE+{?item+wdt:P31+wd:Q11424+.?item+wdt:P345+?IMDb_ID+.?sitelink+schema:about+?item+;+schema:isPartOf+%3Chttps://ru.wikipedia.org/%3E+.}
其中每个项目具有:
- 具有值胶片的 (P31) 属性实例 (Q11424)
- 我们正在寻找的IMDb ID (P345)属性
- 和指向俄语维基百科的站点链接
结果将包括所有维基数据项,它们的IMDb ID以及与它们链接的ruwiki文章名称。
{
"item" : {
"value" : "http://www.wikidata.org/entity/Q203063"
},
"IMDb_ID" : {
"value" : "tt0457308"
},
"sitelink" : {
"value" : "https://ru.wikipedia.org/wiki/Приходи_пораньше"
}
},
...
这是一个示例,如何仅获取俄语页面的 IMDb ID Приходи пораньше.