【问题标题】:How to get Wikipedia content using Wikipedia's URL?如何使用 Wikipedia 的 URL 获取 Wikipedia 内容?
【发布时间】:2020-08-10 17:50:58
【问题描述】:

是否可以创建一个输入字段,您可以在其中粘贴维基百科页面链接,它会从该页面获取所有文本内容?

我正在尝试在我的 Web 应用程序中集成一项功能,人们可以将他们想要分析的维基百科页面链接/URL 粘贴到输入字段中。并且应用程序将使用该 URL 从该页面获取所有文本内容。

假设用户输入这个链接:https://en.wikipedia.org/wiki/Taylor_Swift

应用程序将返回该页面的文本内容,如下所示:

泰勒·艾莉森·斯威夫特(Taylor Alison Swift,1989 年 12 月 13 日出生)是一位美国创作型歌手。她的叙事歌曲创作通常以她的个人生活为中心,受到了媒体的广泛报道。斯威夫特出生于宾夕法尼亚州的西雷丁,2004 年搬到田纳西州的纳什维尔,开始从事乡村音乐事业。 14 岁时,她成为 Sony/ATV 音乐出版社签约的最年轻艺人,15 岁时,她签署了她的第一张唱片合约。她 2006 年的同名首张录音室专辑是 2000 年代公告牌 200 榜单最长的专辑。它的第三首单曲“Our Song”使她成为最年轻的.......

另外,我试过这个api,它有效,但它只返回标题内容,而不是整个页面内容

我浏览了 Wikipedia API 并没有找到(还)。关于我如何做到这一点的任何建议?

【问题讨论】:

  • en.wikipedia.org/api/rest_v1/#/Page%20content 用我的语言访问 Wikipedia 找到,点击页脚的 Developers,Get Started 下的 Web APIs,然后阅读页面。
  • 我已经用示例进行了编辑,展示了我想要什么
  • 另外,我试过这个api,它有效,但它只返回标题内容,而不是整个页面内容
  • 在方法/page/html/{title} 中参考API 规范here,它会为您获取标题的HTML。查看为该方法提供的说明。您在响应中获得的 HTML 与 this 相同,这是响应的呈现版本

标签: javascript node.js mediawiki wikipedia wikipedia-api


【解决方案1】:

由于您在问题中标记了node.js,我假设您使用的是 Javascript。您可以使用一个名为 wikijs

的 npm 库

wikijs 页面的示例

wiki({ apiUrl: 'https://es.wikipedia.org/w/api.php' })
    .page('Cristiano Ronaldo')
    .then(page => page.info())
    .then(console.log);

希望这对你有用

【讨论】:

  • 您了解我的需求吗?我询问了用户将粘贴页面链接而不是标签的情况
  • @ProttayRudra 我检查了您编辑的问题。如果用户正在输入链接en.wikipedia.org/wiki/Taylor_Swift,那么您需要从 URL 中提取 page_title,然后使用官方 API 或 wikijs 或任何其他库进行查询。响应将采用机器可读格式,而不是直接文本。您需要清理 HTML 响应并获取所需的文本
  • 知道如何从 URL 中提取页面标题吗?
  • 一种非常基本的方法是在wikipedia.org/wiki 部分拆分URL,就像url.split('wikipedia.org/wiki/')[1] 一样,并获取页面标题。对于您提到的 Taylor Swift 的链接,您将获得Taylor_Swift 的输出。如果 API 认为这无效,则将 _ 替换为类似 b=a.split('wikipedia.org/wiki/')[1].replace('_', ' ') 的空格
【解决方案2】:

您可以使用 Mediawiki 的这个 API 来获取没有任何格式的文章文本:

https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&titles=Taylor_Swift

它实际上与您在问题中提到的 API 相同,但唯一的区别是您应该删除 &exintro 参数,并添加这两个参数而不是 &exlimit=max&explaintext

【讨论】:

    猜你喜欢
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多