【问题标题】:get wikipedia linked links获取维基百科链接
【发布时间】:2013-08-30 01:43:57
【问题描述】:

所以,我正在构建一个应用程序,我在数据库中显示有关主题的信息,并且在数据库中,维基百科上有一个指向该主题的链接。

现在,我们要为应用程序构建多语言界面(添加法语)。 我们的主要数据有法语版本。 但是对于维基百科链接,我们只有英文链接。

但是维基百科本身,在一个主题的页面上,有不同语言的同一个主题的链接。

例如,拿破仑·波拿巴在维基百科上有这个英文页面 http://en.wikipedia.org/wiki/Napoleon

但是如果你访问那个页面,你会在拿破仑上看到其他语言的链接,并且有一个类似这样的法语链接

http://fr.wikipedia.org/wiki/Napol%C3%A9on_Ier

那么,如果我们知道英语,是否有一种编程方式来访问法语 url?

【问题讨论】:

标签: web wikipedia wikipedia-api


【解决方案1】:

我很确定有一种 wikipedia-api 方法可以做到这一点,但我忍不住发布了一个 Freebase 答案。使用mqlread API 和以下MQL

{
  "en:key": {
    "namespace": "/wikipedia/en",
    "value": "Lake"
  },
  "fr:key": {
    "namespace": "/wikipedia/fr",
    "value": null,
    "limit": 1
  }
}

...你可以得到你想要的。 MQL 基本上说:“给定/wikipedia/en/Lake 对象,/wikipedia/fr 命名空间中的相同对象是什么?答案当然是/wikipedia/fr/Lac

在 REST 中,这是:

https://www.googleapis.com/freebase/v1/mqlread?query={ "en:key": { "namespace": "/wikipedia/en", "value": "Lake" }, "fr:key": { "namespace": "/wikipedia/fr", "value": null, "limit": 1 } }

(为清楚起见,未转义,并带有空格)

然后回应:

{"result": {"en:key": {"value": "Lake", "namespace": "/wikipedia/en"}, "fr:key": {"value": Lac", "namespace": "/wikipedia/fr"}}}

...所以你想要response["result"]["fr:key"]["value"]

一些注意事项:

  1. 确保从 Google 获取 API 密钥以用于任何非测试用途。否则,您将与其他所有人共享配额,并且不会随时用完。在此处阅读更多信息:https://developers.google.com/freebase/v1/mqlread

  2. 当然,您需要正确地 URI 转义您的 query 部分。

  3. 在“查询”的值内,包含不可打印的字符串(以及一些可打印的字符串,例如逗号、括号等)将需要以“Freebase 方式”进行转义:使用美元符号和4 个十六进制数字,例如 "(" 变为 "$0028"

  4. 当然,您需要在响应字符串中进行反向取消转义。

祝你好运!

【讨论】:

    【解决方案2】:

    跨维基链接现在存储在维基数据中。例如http://www.wikidata.org/wiki/Q517 您可以使用 MediaWiki API 访问它们或下载 Wikidata 转储。 http://www.wikidata.org/wiki/Wikidata:Data_access

    如果您还需要来自 Freebase 的其他信息,Freebase API 是很好的选择,但如果您只希望跨wiki 链接直接获取它会给您提供更完整的覆盖范围(148 种语言的维基百科 vs 约 30 种语言的 Freebase)

    【讨论】:

      【解决方案3】:

      嗯,有时链接中唯一改变的是语言的快捷方式,例如:

      http://en.wikipedia.org/wiki/Steve_jobs

      http://fr.wikipedia.org/wiki/Steve_Jobs

      大写/小写“J”在访问该站点时并没有什么不同,因为调用 http://fr.wikipedia.org/wiki/Steve_jobs 无论如何都成功了..

      但是对于维基百科上没有个性的所有内容,没有上述类似链接的可能性很大。

      你的数据库很大吗?如果它不是太大,我会手动输入链接,因为对于这种“愚蠢”的情况,最终这比大算法更有效。

      【讨论】:

      • 谢谢,但我们有超过 200000 个科目,其中很多的链接与英文链接完全不同。我希望有一些 REST API 或一些简单的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多