【问题标题】:How to get a page actual content using page_id in Wikipedia api?如何使用 Wikipedia api 中的 page_id 获取页面实际内容?
【发布时间】:2015-07-16 19:25:29
【问题描述】:

我使用 Wikipedia API 检索给定类别的页面列表。但是,页面由它们的 page_id 表示。如何使用 Wikipedia API 通过 page_id 获取页面的实际文本内容

【问题讨论】:

    标签: wikipedia wikipedia-api


    【解决方案1】:

    AFAIK 没有直接的方法可以从 pageid 获取 wiki 页面的文本 但是有几个解决方法

    获取网址然后解析 通过像这样的 API 调用来获取 wikipage 的 URL http://en.wikipedia.org/w/api.php?action=query&prop=info&pageids=<your_pageid_here>&inprop=url

    然后转到 URL 并解析文本

    获取页面名称,然后获取内容

    如果页面名称已知,Wikipedia API 允许提取文本。但是由于您现在只知道 pageid,因此您需要使用 API 调用将 pageid 转换为 pagename,例如

    http://en.wikipedia.org/w/api.php?action=query&pageids=<your_pageid_here>&format=json

    这将为您提供页面名称,然后您可以进行另一个 API 调用以获取内容

    http://en.wikipedia.org/w/api.php?action=parse&prop=text&page=<your_pagename_here>&format=json

    【讨论】:

    • 看起来如果我使用您提到的api中的内容,它也会返回所有html标签。有没有办法将导出功能仅用于文本? en.wikipedia.org/wiki/Special:Export
    • 根据 en.wikipedia.org/wiki/Special:Export 似乎它用于 MediaWiki 迁移和 XML 形式的导出。您无法从 API 获取原始文本。您可以使用 html 解析器轻松地将 HTML 解析为纯文本。我个人喜欢用Jsoup
    【解决方案2】:

    您可以通过添加这样的 超链接 来做到这一点,您需要从 API 获得的 pageidhref=http://en.wikipedia.org/?curid=${pageid} 。 所以最后的链接就像https://en.wikipedia.org/?curid=13673345[1]

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多