Mediawiki 如何从最新版本的维基百科页面获取内部链接?

Mediawiki 如何从最新版本的维基百科页面获取内部链接?,mediawiki,wikipedia,wikipedia-api,mediawiki-api,Mediawiki,Wikipedia,Wikipedia Api,Mediawiki Api,我试图从维基百科页面中提取内部链接。这就是我正在使用的查询 /w/api.php?action=query&prop=links&format=xml&plnamespace=0&pllimit=max&titles=pageTitle 但是,结果并不反映wiki页面上的内容。以一篇随机文章为例。这个页面上只有十几个链接。但是我提出这个问题的时候, /w/api.php?action=query&prop=links&format=xml

我试图从维基百科页面中提取内部链接。这就是我正在使用的查询

/w/api.php?action=query&prop=links&format=xml&plnamespace=0&pllimit=max&titles=pageTitle
但是,结果并不反映wiki页面上的内容。以一篇随机文章为例。这个页面上只有十几个链接。但是我提出这个问题的时候,

/w/api.php?action=query&prop=links&format=xml&plnamespace=0&pllimit=max&titles=Von_Mises%E2%80%93Fisher_distribution

我找回了187个链接。我猜API可能有一个数据库,包含所有添加到页面的链接,包括所有修订。是这样吗?如何仅从上一版本中获取链接?

数据库中有文章当前版本中的正确链接列表。您从API获得的所有链接实际上都在本文中。但是,它们大多数隐藏在底部的(两次折叠)导航框中(滚动到底部,单击蓝色栏上的“显示”,然后单击您现在看到的其他蓝色栏上的“显示”)

请注意,这些链接位于页面上,但未在wikitext中定义-它们来自{{{}}导航模板(以及该模板依次包含的模板)


遗憾的是,没有好办法只列出页面上直接/明确定义的链接,因为模板替换发生在实际解析wiki语法之前。

数据库在当前版本的文章中有正确的链接列表。您从API获得的所有链接实际上都在本文中。但是,它们大多数隐藏在底部的(两次折叠)导航框中(滚动到底部,单击蓝色栏上的“显示”,然后单击您现在看到的其他蓝色栏上的“显示”)

请注意,这些链接位于页面上,但未在wikitext中定义-它们来自{{{}}导航模板(以及该模板依次包含的模板)


遗憾的是,没有好办法只列出页面上直接/明确定义的链接,因为模板替换发生在实际解析wiki语法之前。

是否您忘记了导航框中的链接?从我所看到的API回复中的所有链接都在页面中。你能举一个不应该存在的链接的例子吗?+1。你说得对,利奥。遗憾的是,API不允许我指定从页面的哪个部分提取链接:(可能是您忘记了导航框中的链接吗?从我看到的API回复中的所有链接都在页面中。您能给出一个不应该存在的链接的示例吗?+1.您是对的,leo。不幸的是,API不允许我指定从页面的哪个部分提取链接:(+1.我明白了。这让事情比我预想的要复杂。在这种情况下,我想最好的方法是解析wikitext。但是你知道有什么解析器适合这项工作吗?谢谢。遗憾的是,MediaWiki语法非常复杂,将它转换成HTML的东西称为“解析器”这使得重新实现“规范”解析器的精确行为变得非常困难。我们得到的结论是Parsoid,但有一大堆“体面的”应该足够好的解析器来获取链接。看看这里:如果您只想提取链接,您可能可以使用PyWikipedia框架或Similar库中的代码。Soo还+1。我明白了。这使事情比我预期的更复杂。在这种情况下,我想最好的方法是解析wikitext。但是您知道有什么用处吗有能力的解析器对这项工作有好处吗?谢谢。遗憾的是,MediaWiki语法非常复杂,将其转换为HTML的东西称为“解析器”是非常错误的。这使得很难重新实现“规范”解析器的确切行为。我们得到的结论是Parsoid,但有很多“体面的”解析器应该足够好,可以为您获取链接。看看这里:如果您只想提取链接,您可能可以使用PyWikipedia框架或Similar库中的代码