通过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标签。