【问题标题】:How to get IMDb ID for some film article from the Russian Wikipedia?如何从俄罗斯维基百科获取一些电影文章的 IMDb ID?
【发布时间】:2017-01-24 09:40:57
【问题描述】:

我正在收集一些俄语电影的数据,并且使用 Wikipedia API,我可以以 JSON 格式查询所需电影的数据:

https://ru.wikipedia.org/w/api.php?format=json&action=query&prop=revisions&rvprop=content&titles=%s

%s 是文章的标题。

必需属性之一 - IMDb ID。这里的问题是,并非所有文章都包含在 wiki 标记中(实际上是在电影模板中),但总是呈现页面。

电影模板的Russian version 说IMDb ID 是自动从维基数据中获取的(英文版说完全拒绝此信息框中的任何数据库,而支持底部的链接部分)。

有没有办法使用 Wikipedia API 或 Wikidata API 请求 IMDb ID?

【问题讨论】:

  • 您是否尝试过使用 OMDb API。它会为您获取 IMDb ID 例如:omdbapi.com/…
  • @Vikash 是的,目前我使用 OMDb API,但是如果文章中没有,从哪里获取 id?

标签: sparql wikipedia-api wikidata wikidata-api


【解决方案1】:

您可以通过Wikidata Query Service获取所有具有 IMDb ID 并链接到 ruwiki 的 Wikidata 电影项目:

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+.}

每个项目的位置:

结果将包括所有 Wikidata 项目、它们的 IMDb ID 以及与它们链接的 ruwiki 文章名称。

{
  "item" : {
    "value" : "http://www.wikidata.org/entity/Q203063"
  },
  "IMDb_ID" : {
    "value" : "tt0457308"
  },
  "sitelink" : {
    "value" : "https://ru.wikipedia.org/wiki/Приходи_пораньше"
  }
},
...

here 是一个示例,您如何仅获取俄语页面 Приходи пораньшеIMDb ID

【讨论】:

  • 太慢了...花了大约 5-8 秒才找到。但它有效,谢谢!
  • @cybersoft。我不知道您使用什么语言,但您是否尝试过始终使用查询来获取所有 IMDb ID 并按特定标题在其中搜索的变体?我想知道如果您必须使用“慢”查询直接通过相同的标题获取此 ID,速度会有什么不同。
  • 她是结果:下载到内存 ~5 秒,通过 URL 搜索 ~0.7 毫秒。我使用的是 java 1.8,搜索是使用并行 Stream API 完成的(在我的案例中调试显示 3 个线程)。这一切都比向服务器发送查询并等待响应要快......可能是服务器很慢,或者是网络延迟
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-06
  • 2011-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多