通过API从mediawiki页面获取文本内容

我对MediaWiki相当陌生,现在我有点问题。 我有一些维基页面的标题,我想只使用api.php获取所述页面的文本,但是我在API中find的所有内容都是获取页面的Wiki内容的一种方法(使用wiki标记)。 我用这个HTTP请求…

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

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

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

我的工作是请求HTML页面(使用您在浏览器中使用的普通URL),并去掉内容div下的HTML标签。

编辑:

使用HTML Parser for Java我已经有了很好的结果。 它具有如何去除给定的DIV下的HTML标签的例子。

使用action=parse获取html:

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

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

API的TextExtracts扩展与你所要求的有关。 使用prop=extracts得到一个清理的响应。 例如, 这个链接会给你清理堆栈溢出文章的文本 。 还有一点不错的是,它还包含章节标签,所以你可以识别文章的各个部分。

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

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

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

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

您可以使用explaintext参数从API获取文本格式的wiki数据。 此外,如果您需要访问许多标题的信息,您可以在一次调用中获得所有标题的wiki数据。 使用pipe道字符| 分隔每个标题。 例如,此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= :解决redirect问题。

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

没有任何格式符号的维基页面在很多情况下都不会有多less意义。

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

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

进入这个问题的Python用户可能对wikipedia模块( docs )感兴趣:

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

除了部分( == )以外,每个格式都会被删除。

内容进入你的页面之后你可以做一件事 – 你可以使用PHP函数strip_tags()去除HTML标签。