Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web 获取维基百科链接_Web_Wikipedia_Wikipedia Api - Fatal编程技术网

Web 获取维基百科链接

Web 获取维基百科链接,web,wikipedia,wikipedia-api,Web,Wikipedia,Wikipedia Api,因此,我正在构建一个应用程序,在数据库中显示关于主题的信息,在数据库中,维基百科上有一个主题链接 现在,我们想为应用程序构建多语言界面(添加法语)。 我们的主要数据有法文版本。 但对于维基百科链接,我们只有英文链接 但是维基百科本身,在一个主题的页面上有指向同一主题的不同语言的链接 例如,拿破仑·波拿巴在维基百科上有一个英文页面 但是如果你访问这个页面,你会看到拿破仑的其他语言的链接,还有一个法语的链接 那么,如果我们懂英语,有没有一种编程方式可以访问法语url?嗯,有时候链接中唯一的变化就

因此,我正在构建一个应用程序,在数据库中显示关于主题的信息,在数据库中,维基百科上有一个主题链接

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

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

例如,拿破仑·波拿巴在维基百科上有一个英文页面

但是如果你访问这个页面,你会看到拿破仑的其他语言的链接,还有一个法语的链接


那么,如果我们懂英语,有没有一种编程方式可以访问法语url?

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

通过访问站点,大写/小写字母“J”不会产生影响,因为调用 不管怎样,他还是成功了

但对于维基百科上所有不属于个人的东西来说,没有类似链接的可能性很大


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

我很确定有一个维基百科api方法可以做到这一点,但我忍不住发布了一个免费的答案。使用
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}

(为清晰起见,非转义且带有空格)

答复如下:

{“结果”:{“en:key”:{“value”:“Lake”,“namespace”:“/wikipedia/en”},“fr:key”:{“value”:Lac,“namespace”:“/wikipedia/fr”}}

。。。所以您需要
response[“result”][“fr:key”][“value”]

一些注意事项:

  • 确保从谷歌获得API密钥用于任何非测试用途。否则,您将与其他人共享配额,并且配额在任何时候都不会用完。请在此处阅读更多信息:

  • 当然,您需要正确地转义
    查询
    部分

  • 在“query”的值中,包含非可打印内容的字符串(有些可打印内容很好,如逗号、parens等)将需要“自由基方式”进行转义:使用一个美元符号和4个十六进制数字,以便
    ”(“
    变成
    ”$0028

  • 当然,您需要在响应字符串中执行反向取消转义


  • 祝您好运!

    interwiki链接现在存储在Wikidata中。例如,您可以使用MediaWiki API访问它们,也可以下载Wikidata转储


    如果您还需要来自Freebase的其他信息,那么Freebase API是很好的,但是如果您只想直接获取interwiki链接,那么它将为您提供更全面的覆盖范围(148种语言的维基百科,而Freebase中只有30种语言)

    谢谢,但我们有超过200000个主题,其中许多主题的链接与英文主题完全不同。我希望有一些REST API或简单的东西。你看过MediaWiki API的文档了吗?可能是