【问题标题】:How to get all links(id) of specific page in wikipedia by pageid如何通过pageid获取维基百科中特定页面的所有链接(id)
【发布时间】:2013-08-25 19:11:46
【问题描述】:

我正在尝试使用 Wiki API 构建查询,该 API 将以 id 格式返回特定文章的所有内部链接。 我有一些文章的pageId。例如,文章“Android(操作系统)”的 ID 为 12610483。 在我的客户端,我只需要使用 id,然后仅通过 id 获取所有信息。 我的目标是从给定文章 ID 中找到所有内部链接(文章 ID)。

不幸的是,我发现唯一可能的方法是获取由文章标题表示的链接: http://en.wikipedia.org/w/api.php?action=parse&format=json&pageid=12610483&prop=links

除了标题之外,还有其他方法可以获取链接的 id 吗?

【问题讨论】:

    标签: php mediawiki wiki wikipedia-api mediawiki-api


    【解决方案1】:

    您要做的是使用action=query&prop=linkspagelinks 数据库表中获取数据,而不是解析页面文本。

    这仍然只会给你页面标题(因为链接可能会导致一个不存在的页面,这意味着没有页面 id)。

    但是你可以通过使用prop=links 作为生成器来解决这个问题:

    http://en.wikipedia.org/w/api.php?action=query&format=json&pageids=12610483&generator=links&gpllimit=max

    如果文章有很多链接(就像您建议的那样),您将需要使用分页(请参阅gplcontinue 元素)。

    【讨论】:

    • @svick。此方法只计算每个链接一次。我想知道是否有任何方法可以跟踪页面中每个链接的数量?例如,它不仅告诉给定页面链接到 Android-x86,而且还告诉使用 Android-x86 文章中的 k 次? mediawiki API可以吗?谢谢。
    • @chepukha 该信息未存储在 pagelinks 表中(或其他任何地方,至少不直接存储),因此您找不到用于此的 API 方法。您需要为此解析页面文本,可以是原始 wikitext 或 HTML。
    • @svick。我懂了。感谢您的确认。我有一个相关的问题here。如果您有任何见解,请告诉我。
    【解决方案2】:

    我认为你需要使用 PHP Simple HTML DOM Parser

    你在这里找不到 http://simplehtmldom.sourceforge.net/

    【讨论】:

    • 1.绝对没有理由在这里使用 HTML 解析器。 2. 这对获取页面 id 有什么帮助?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多