【问题标题】:Wikipedia API infobox维基百科 API 信息框
【发布时间】:2016-07-27 11:02:24
【问题描述】:

我正在使用维基百科 API 从某些页面获取信息框。 一个例子是Imperial College London 我的问题是我得到的HESA student population|INSTID=0132 值。我希望只获得学生人数的数量,但我却得到了上面的 id。如何获取页面中存在的信息框的值?

此外,如果您检查wiki page,则有两个信息框(主要和排名)。我怎样才能同时获得它们?

【问题讨论】:

  • 是的,我读过。 wikitext 只是可解析的。我使用了一些 npm 库,但没有什么强大的。某些值不存在(例如,我在我的问题中提到的那个)。返回带有类的 html 的 api 非常好。仍然存在问题,但是通过对解析进行一些调整,我可以克服这些问题。带着这个问题,我想知道我是否缺少某些功能。没有任何东西返回纯信息框,但新的 api 速度很快并且包含我需要的所有信息。
  • 如果你读过那篇文章,那么你肯定看过DBPedia?
  • 是的。不幸的是,并非所有值都存在。

标签: node.js wikipedia-api


【解决方案1】:

您可以使用另一个REST API 来访问维基百科内容。要为您请求的文章获取结构良好的 HTML:

https://en.wikipedia.org/api/rest_v1/page/html/Imperial_College_London

HTML 由Parsoid 服务生成,该服务在DOM Spec 之后生成HTML/RDFa 内容。收件箱将是带有类 `infobox 的 html table 元素,因此您可以轻松找到页面上的所有收件箱。

收件箱通常由复杂的模板创建,因此您可能更容易只解析表格 HTML。

【讨论】:

  • 你好@Petr。感谢您的回复。我还不能使用这个 api(虽然它更干净),因为它仍处于测试阶段。我可以用en.wikipedia.org/w/… 做同样的事情。哪个使用当前/稳定的 api,并且所有样式都存在,所以我可以使用相同的逻辑(解析)。我已经考虑过这一点,但我希望有更好/更清洁/更快的方法来做到这一点。
  • @alkis 我是这个 API 的开发者,所以我可以向你保证,“beta”状态对你来说不会有问题。 /page/html 端点现在非常稳定,并被维基媒体内外的几个主要客户使用。 VisualEditor、Android 应用、内容翻译工具等功能都依赖此 API。
  • 这是个好消息。它也更快吗?好像快了很多
  • 应该比 PHP API 快很多,因为这些 API 是通过 Varnish 缓存的,所以你在获取缓存的内容上有很大的改变。虽然 PHP API 根本没有缓存。
猜你喜欢
  • 2011-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-02
  • 2020-09-23
  • 2016-02-25
  • 2017-09-08
相关资源
最近更新 更多