如何使用Wikipedia的API获取Wikipedia内容?

问题描述 投票:50回答:11

我想获得维基百科文章的第一段。

要执行的API查询是什么?

wikipedia-api
11个回答
48
投票

请参见MediaWiki docs的本节

这些是关键参数。

prop=revisions&rvprop=content&rvsection=0

rvsection = 0指定仅返回引导段。

请参见此示例。

http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=pizza

要获取HTML,您可以类似地使用action = parsehttp://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&page=pizza

注意,您必须删除所有模板或信息框。


0
投票

我为自己的需要创建了简短的Wikipedia API docs。关于如何获取文章,图像和类似内容,有一些有效的示例。


-1
投票
$keyword = "Batman"; //Term you want to search

$url = 'http://en.wikipedia.org/w/api.php?action=parse&page='.$keyword.'&format=json&prop=text&section=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>';
      }
   }
}

30
投票

请参阅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%20OverflowAPI sandbox http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow可以对此查询进行更多实验。

[请注意,如果您想要第一段,则仍然需要获取第一个标签。但是,在此API调用中,没有其他要解析的资源(如图像)。如果您对此介绍性摘要感到满意,则可以通过运行php's strip_tag之类的函数来删除html标记,以检索文本。


20
投票

我这样做:


3
投票

如果需要对大量文章进行此操作,则可以直接下载Wikipedia数据库转储,然后通过诸如JWPL之类的API来访问它,而不是直接查询该网站。


3
投票
<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>

2
投票

您可以通过查询诸如https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java的页面来获得Wikipedia中文章的介绍。您只需要解析json文件,结果就是纯文本,该纯文本已经清除,包括删除链接和引用。


1
投票

您可以直接下载Wikipedia数据库,并使用独立的应用程序Wiki Parser将所有页面解析为XML。第一段是所得XML中的单独节点。


1
投票

您可以使用JQuery来做到这一点。首先使用适当的参数创建url。选中此link以了解参数的含义。然后使用$.ajax()方法检索文章。请注意,维基百科不允许跨源请求。这就是为什么我们在请求中使用dataType : jsonp的原因。


0
投票

您可以为此使用摘要REST端点的extract_html字段:例如https://en.wikipedia.org/api/rest_v1/page/summary/Cat

© www.soinside.com 2019 - 2024. All rights reserved.