我对MediaWiki还比较陌生,现在遇到一点问题。我有一个Wiki页面的标题,想用api.php获取该页面的文本内容,但是我在API中找到的仅仅是获取带有维基标记的Wiki内容的方法。我尝试了这个HTTP请求...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
我需要的只是文字内容,而不带维基标记。使用MediaWiki API可以实现吗?
我对MediaWiki还比较陌生,现在遇到一点问题。我有一个Wiki页面的标题,想用api.php获取该页面的文本内容,但是我在API中找到的仅仅是获取带有维基标记的Wiki内容的方法。我尝试了这个HTTP请求...
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
我需要的只是文字内容,而不带维基标记。使用MediaWiki API可以实现吗?
使用 action=parse
获取html:
/api.php?action=parse&page=test
从html中获取文本的一种方法是将其加载到浏览器中,并使用JavaScript遍历节点,仅查找文本节点。
format=json
,action=parse
也可以返回 JSON 格式。 - scai/rest.php/v1/page/<page name>/html
工作示例:https://www.mediawiki.org/w/rest.php/v1/page/MediaWiki/html - Robis Koopmansprop=extracts
来获取已清理的响应。例如,此链接将为您提供有关 Stack Overflow 文章的已清理文本。它还包括节(section)标签,因此您可以识别文章的各个部分。/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
%26action%3Draw
改为 ?action=raw
,它就可以工作了。 - KSTexplaintext
参数从API以文本格式获取维基数据。此外,如果您需要访问多个标题的信息,则可以在一个调用中获取所有标题的维基数据。使用管道符号 |
分隔每个标题。例如,此 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=
: 解决重定向问题。我认为使用API仅获取文本是不可能的。
对我有效的方法是请求HTML页面(使用在浏览器中使用的普通URL),并在内容div下剥离HTML标签。
编辑:
我使用Java的HTML解析器取得了良好的结果。它有如何从给定DIV下剥离HTML标签的示例。
在将内容引入您的页面后,您可以做一件事情 - 使用PHP函数strip_tags()
来删除HTML标签。