维基百科API:从解析请求中排除引用

时间:2013-04-28 05:32:21

标签: mediawiki wikipedia wikipedia-api mediawiki-api

我正在尝试按照页面上显示的顺序从特定页面获取链接,或者合理地关闭。我相信我使用解析请求找到了正确的API调用,但是我注意到我得到了很多我认为是“垃圾”链接,这些链接实际上是在引用中完成的。例如,对于Albert Einstein,我执行请求(http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Albert%20Einstein&redirects=&prop=links),我将获得在E. T. Whittaker和JSTOR等参考文献中出现的链接。就我的目的而言,引用中的这些链接是“垃圾”。

或者,我查看了查询命令,但发现带有prop = link的查询命令最终只是给了我按字母顺序排列的链接,这会丢失我想要查看的部分信息。此外,此API查询还包括引用内的这些“垃圾”链接。

我有没有告诉parse命令忽略引用标记内的链接,或者我是否需要使用API​​检索文本然后自己在客户端进行解析?

2 个答案:

答案 0 :(得分:3)

我也认为没有办法准确地得到你想要的东西。如果您要求MediaWiki解析页面,它将在回复之前解析所有模板引用。如果我需要做你想要的,我只需要获得页面的原始wikitext:

http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Albert%20Einstein&redirects=&prop=wikitext

然后使用它我会做自己的解析。使用正则表达式查找所有wikilink应该很容易。从页面中删除所有模板也很容易。

答案 1 :(得分:2)

我认为没有直接的方法可以做到这一点。一种解决方法是获取页面文本,删除实际显示引用的代码({{reflist}}<references />),然后使用API​​来解析它。这会为Help:Cite errors/Cite error refs without references添加一个“垃圾”链接,但很容易忽略这一页。