65

我对 MediaWiki 还很陌生,现在我遇到了一些问题。我有一些 Wiki 页面的标题,我只想使用api.php获取所述页面的文本,但我在 API 中找到的所有内容都是获取页面 Wiki 内容的一种方式(使用 wiki 标记)。我使用了这个 HTTP 请求...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

但我只需要文本内容,没有 Wiki 标记。MediaWiki API 有可能吗?

4

10 回答 10

70

用于action=parse获取 html:

/api.php?action=parse&page=test

从 html 获取文本的一种方法是将其加载到浏览器中并遍历节点,使用 JavaScript 仅查找文本节点。

于 2011-05-27T16:50:06.767 回答
45

API 的 TextExtracts 扩展可以满足您的要求。用于prop=extracts获得干净的响应。例如,此链接将为您提供 Stack Overflow 文章的清理文本。还不错的是它仍然包含部分标签,因此您可以识别文章的各个部分。

只是为了在我的答案中包含一个可见链接,上面的链接如下所示:

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

编辑:正如 Amr 提到的,TextExtracts 是 MediaWiki 的扩展,因此它不一定适用于每个 MediaWiki 站点。

于 2014-02-18T04:05:03.333 回答
38

?action=raw在 MediaWiki 页面末尾添加以原始文本格式返回最新内容。例如:- https://en.wikipedia.org/wiki/Main_Page?action=raw

于 2014-03-06T12:49:39.003 回答
33

您可以使用explaintext参数从 API 中获取文本格式的 wiki 数据。另外,如果您需要访问多个标题的信息,您可以在一次调用中获取所有标题的 wiki 数据。使用竖线字符|分隔每个标题。例如,此 API 调用将返回来自“Google”和“Yahoo”页面的数据:

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

参数:

  • explaintext:返回提取为纯文本而不是有限的 HTML。
  • exlimit=max: 返回多个结果。目前最大值为 20。
  • exintro: 只返回第一部分之前的内容。如果你想要完整的数据,只需删除它。
  • redirects=: 解决重定向问题。
于 2015-06-10T18:31:58.753 回答
11

这是最简单的方法: http ://en.wikipedia.org/w/api.php?format=xml&action=query&titles=Albert%20Einstein&prop=revisions&rvprop=content

于 2012-04-24T18:41:20.620 回答
7

来到这个问题的 Python 用户可能对wikipedia模块(文档)感兴趣:

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

除部分 ( ==) 之外的所有格式都被删除。

于 2017-08-03T06:52:28.283 回答
6

我认为不可能使用 API 来获取文本。

对我有用的是请求 HTML 页面(使用您将在浏览器中使用的普通 URL)并去除内容 div 下的 HTML 标记。

编辑:

我使用HTML Parser for Java 取得了不错的成绩。它提供了如何去除给定 DIV 下的 HTML 标记的示例。

于 2009-10-26T14:51:33.577 回答
3

使用 action=render 获得尽可能干净的页面:

https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I?action=render

对比

https://wiki.eclipse.org/Tip_of_the_Day/Eclipse_Tips/Now_where_was_I

于 2017-12-27T23:15:56.400 回答
2

在许多情况下,没有任何格式符号的 Wiki 页面实际上并没有多大意义。

如果你愿意,你可以自己去掉格式,但你会在这个过程中破坏一些东西。

(除非您正在创建类似搜索引擎的东西,在这种情况下,您只需要文本部分并且可以完全忽略格式符号)

于 2009-10-26T14:49:57.120 回答
-2

将内容引入页面后,您可以做一件事 - 您可以使用 PHP 函数strip_tags() 删除 HTML 标记。

于 2017-06-23T14:50:59.240 回答