2013-04-28 28 views
2

我试图从页面上呈现的顺序或相当接近的顺序获取特定页面的链接。我相信我使用解析请求找到了正确的API调用,但是我注意到我收到了很多我认为是垃圾链接,这些链接确实是链接在引用中完成的。例如,对于阿尔伯特爱因斯坦,我提出了这样的要求(http://en.wikipedia.org/w/api.php?action=parse&format=json&page=Albert%20Einstein&redirects=&prop=links),并且我会得到像E. T. Whittaker和JSTOR这样的参考文献中出现的链接。就我的目的而言,这些参考链接是“垃圾”。Wikipedia API:从分析请求中排除引用

另外,我查看了查询命令,但发现使用prop = link的查询命令最终会给我链接alphabetized,这会丢失我想查看的部分信息。另外,这个API查询还包括来自参考文献中的这些“垃圾”链接。

有无论如何告诉解析命令忽略参考标签内的链接,或者我需要使用API​​检索文本,然后自己解析客户端?

+1

我也忘了提及,我考虑过使用章节,但据我所知,我没有确定哪些章节是使用API​​的参考章节的编程方法。 – Nobosi 2013-04-28 05:34:04

+0

不能在获取HTML之后隐藏引用,例如用CSS样式? – Nemo 2015-11-03 21:47:09

回答

2

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

+0

这就是我的想法,并最终结束了,但认为我会仔细检查,以确保我没有错过API中的东西。谢谢你的帮助! – Nobosi 2013-04-28 18:24:01

3

我也不认为有一种方法可以准确找到你要找的东西。如果您要求MediaWiki解析页面,它将在返回之前解析所有模板引用。如果我需要做你想找我反而刚刚得到的页面的原始wiki文字:

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

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

+0

这是我最终采取的方法。谢谢你的帮助! – Nobosi 2013-04-28 18:24:36

+0

非常好!很高兴帮助。 – 2013-05-02 18:52:43