Le_*_*eur 58 mediawiki wikipedia-api mediawiki-api
我对MediaWiki很新,现在我有点问题.我有一些Wiki页面的标题,我想使用api.php获取所述页面的文本,但我在API中找到的所有内容都是获取页面的Wiki内容的方法(使用wiki标记).我使用了这个HTTP请求......
/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test
Run Code Online (Sandbox Code Playgroud)
但我只需要文本内容,没有Wiki标记.MediaWiki API可以实现吗?
gil*_*ly3 68
使用action=parse得到的HTML:
/api.php?action=parse&page=test
从html获取文本的一种方法是将其加载到浏览器中并使用JavaScript遍历节点,仅查找文本节点.
eri*_*ell 42
API的TextExtracts扩展可以解决您的问题.使用prop=extracts得到清理响应.例如,此链接将为您提供Stack Overflow文章的清理文本.同样不错的是它仍然包含部分标签,因此您可以识别文章的各个部分.
只是在我的回答中包含一个可见的链接,上面的链接看起来像:
/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true
Run Code Online (Sandbox Code Playgroud)
编辑:正如Amr所提到的,TextExtracts是MediaWiki 的扩展,因此它不一定适用于每个MediaWiki网站.
bai*_*jum 30
?action=raw在MediaWiki页面的末尾添加以原始文本格式返回最新内容.例如: - https://en.wikipedia.org/wiki/Main_Page?action=raw
Anu*_*raj 25
您可以使用explaintext参数从API获取文本格式的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=
Run Code Online (Sandbox Code Playgroud)
参数:
explaintext:将提取返回为纯文本而不是有限的HTML.exlimit=max:返回多个结果.最大值目前是20.exintro:仅返回第一部分之前的内容.如果您想要完整数据,只需删除它即可.redirects=:解决重定向问题.Har*_*est 11
这是最简单的方法:http: //en.wikipedia.org/w/api.php?format = xml&action = query&titles = Albert%20Einstein&prop = latest&rvprop = content
来到这个问题的 Python 用户可能对wikipedia模块 ( docs )感兴趣:
import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)
Run Code Online (Sandbox Code Playgroud)
除了部分 ( ==)之外的所有格式都被剥离了。
我不认为使用API来获取文本是不可能的.
对我有用的是请求HTML页面(使用您将在浏览器中使用的普通URL)并删除内容div下的HTML标记.
编辑:
我使用HTML Parser for Java 取得了不错的成绩.它提供了如何在给定DIV下去除HTML标记的示例.