如何通过页面id获取维基百科特定页面的所有链接(id)

3
我正在尝试使用Wiki API构建查询,以id格式返回特定文章的所有内部链接。 我有某篇文章的pageId。例如,“Android(操作系统)”的id为12610483。在客户端中,我只需要使用id并稍后仅通过id获取所有信息。我的目标是从给定的文章id中找到所有内部链接(文章的ids)。不幸的是,我发现唯一可能的方法是获得由文章标题表示的链接:http://en.wikipedia.org/w/api.php?action=parse&format=json&pageid=12610483&prop=links是否有其他方法可以获取链接的ids而不仅仅是标题?
2个回答

4
你需要做的是使用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
1
@chepukha,该信息未存储在“pagelinks”表中(或至少不是直接存储在任何其他地方),因此您将找不到相应的API方法。您需要解析页面文本,无论是作为原始维基文本还是HTML格式。 - svick
@svick。我明白了,感谢您的确认。我有一个相关的问题在这里。如果您有任何见解,请告诉我。 - chepukha

-3

1
  1. 在这里使用HTML解析器绝对没有任何理由。
  2. 这样做会如何帮助获取页面ID?
- svick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接