如何使用Wikipedia的API获取Wikipedia内容?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用Wikipedia的API获取Wikipedia内容?相关的知识,希望对你有一定的参考价值。
我想获得维基百科文章的第一段。
要执行的API查询是什么?
请参见MediaWiki docs的本节
这些是关键参数。
prop=revisions&rvprop=content&rvsection=0
rvsection = 0指定仅返回引导段。
请参见此示例。
要获取html,您可以类似地使用action = parsehttp://en.wikipedia.org/w/api.php?action=parse§ion=0&prop=text&page=pizza
注意,您必须删除所有模板或信息框。
我为自己的需要创建了简短的Wikipedia API docs。关于如何获取文章,图像和类似内容,有一些有效的示例。
$keyword = "Batman"; //Term you want to search
$url = 'http://en.wikipedia.org/w/api.php?action=parse&page='.$keyword.'&format=json&prop=text§ion=0';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, 'Infeeds Sniper');
$c = curl_exec($ch);
$json = json_decode($c);
if($json !='' && isset($json->{'parse'})){
$title = $json->{'parse'}->{'title'};
$content = $json->{'parse'}->{'text'}->{'*'};
$pattern = '#<p>(.*)</p>#Us';
if(preg_match($pattern, $content, $matches)){
if($matches[1]!=''){
$con = preg_replace_callback("/[[^)]+]/", function($m){return '';}, $matches[1]);
echo '<h2>'.$title.'</h2>'.strip_tags($con).'</p><src>Source: <a href="https://en.wikipedia.org/wiki/'.$keyword.'" target="_blank">Wikipedia</a></src>';
}
}
}
请参阅Is there a clean wikipedia API just for retrieve content summary?以了解其他建议的解决方案。这是我建议的一个:
实际上有一个很好的prop称为extracts,可以与专门为此目的设计的查询一起使用。摘要可让您获取文章摘要(文章文本被截断)。有一个名为exintro的参数,可用于检索第零部分中的文本(没有其他资源,如图像或信息框)。您还可以检索具有更细粒度的摘录,例如通过一定数量的字符(exchars)或通过一定数量的句子(exsentences>)
这里是一个样本查询
http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow和API sandbox http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow可以对此查询进行更多实验。[请注意,如果您想要第一段,则仍然需要获取第一个标签。但是,在此API调用中,没有其他要解析的资源(如图像)。如果您对此介绍性摘要感到满意,则可以通过运行php's strip_tag之类的函数来删除html标记,以检索文本。
我这样做:
如果需要对大量文章进行此操作,则可以直接下载Wikipedia数据库转储,然后通过诸如JWPL之类的API来访问它,而不是直接查询该网站。
<script>
function dowiki(place) {
var URL = 'https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=';
URL += "&titles=" + place;
URL += "&rvprop=content";
URL += "&callback=?";
$.getJSON(URL, function (data) {
var obj = data.query.pages;
var ob = Object.keys(obj)[0];
console.log(obj[ob]["extract"]);
try{
document.getElementById('Label11').textContent = obj[ob]["extract"];
}
catch (err) {
document.getElementById('Label11').textContent = err.message;
}
});
}
</script>
您可以通过查询诸如https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java的页面来获得Wikipedia中文章的介绍。您只需要解析json文件,结果就是纯文本,该纯文本已经清除,包括删除链接和引用。
您可以直接下载Wikipedia数据库,并使用独立的应用程序Wiki Parser将所有页面解析为XML。第一段是所得XML中的单独节点。
您可以使用JQuery来做到这一点。首先使用适当的参数创建url。选中此link以了解参数的含义。然后使用$.ajax()
方法检索文章。请注意,维基百科不允许跨源请求。这就是为什么我们在请求中使用dataType : jsonp
的原因。
您可以为此使用摘要REST端点的extract_html
字段:例如https://en.wikipedia.org/api/rest_v1/page/summary/Cat。
以上是关于如何使用Wikipedia的API获取Wikipedia内容?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Wikipedia API 获取图像 URL,但有些图像不返回 URL,为啥?