【问题标题】:Wikipedia API: Excluding References From Parse RequestWikipedia API:从解析请求中排除引用
【发布时间】:2013-04-22 00:22:12
【问题描述】:

我正在尝试按页面上显示的顺序或合理关闭的顺序从特定页面获取链接。我相信我使用解析请求找到了正确的 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 检索文本,然后自己在客户端进行解析?

【问题讨论】:

  • 我也忘了提及,我考虑过使用部分,但据我所知,我没有使用 API 确定哪些部分是参考部分的编程方式。
  • 你不能在获取 HTML 后隐藏引用吗,例如使用 CSS 样式?

标签: mediawiki wikipedia wikipedia-api mediawiki-api


【解决方案1】:

我也不认为有一种方法可以完全满足您的需求。如果您要求 MediaWiki 解析页面,它将在返回之前解析所有模板引用。如果我需要做你正在寻找的东西,我只会获取页面的原始 wikitext:

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

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

【讨论】:

  • 这就是我最终采用的方法。感谢您的帮助!
  • 太棒了!很高兴它有帮助。
【解决方案2】:

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

【讨论】:

  • 这就是我的想法并最终采用,但我想我会仔细检查以确保我没有错过 API 中的某些内容。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2019-03-31
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
  • 1970-01-01
  • 2016-12-03
  • 2014-12-08
  • 2013-01-18
相关资源
最近更新 更多