如何使用维基百科的API获取维基百科内容?

时间:2011-08-25 04:50:19

标签: wikipedia-api

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

要执行此操作的API查询是什么?

11 个答案:

答案 0 :(得分:43)

请参阅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,您可以使用类似的use action = parse http://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&page=pizza

请注意,您必须删除任何模板或信息框。

答案 1 :(得分:28)

有关其他建议的解决方案,请参阅Is there a clean wikipedia API just for retrieve content summary?。这是我建议的一个:

实际上有一个非常好的 prop ,名为 extracts ,可以用于专门为此目的设计的查询。提取允许您获取文章摘录(截断的文章文本)。有一个名为 exintro 的参数可用于检索第0部分中的文本(没有其他资源,如图像或信息框)。您还可以检索更精细的提取,例如一定数量的字符( exchars )或一定数量的句子( exsentences

以下是示例查询 http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow API沙箱 http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow可以更多地了解此查询。

请注意,如果你想要第一段特别的话,你还需要获得第一个标签。但是,在此API调用中,没有像图像要解析的其他资源。如果您对此简介摘要感到满意,则可以通过运行删除html标记的php's strip_tag等函数来检索文本。

答案 2 :(得分:18)

我是这样做的:

https://en.wikipedia.org/w/api.php?action=opensearch&search=bee&limit=1&format=json

您得到的响应是一个包含数据的数组,易于解析:

[
  "bee",
  [
    "Bee"
  ],
  [
    "Bees are flying insects closely related to wasps and ants, known for their role in pollination and, in the case of the best-known bee species, the European honey bee, for producing honey and beeswax."
  ],
  [
    "https://en.wikipedia.org/wiki/Bee"
  ]
]

要获得第一段limit=1就是您所需要的。

答案 3 :(得分:4)

要获取文章的第一段:

https://en.wikipedia.org/w/api.php?action=query&titles=Belgrade&prop=extracts&format=json&exintro=1

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

答案 4 :(得分:3)

如果您需要为大量文章执行此操作,那么请考虑下载Wikipedia数据库转储,然后通过JWPL等API访问它,而不是直接查询网站。

答案 5 :(得分: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>

答案 6 :(得分:2)

您可以通过查询https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=java等网页来了解维基百科中的文章。您只需要解析json文件,结果是已清理的纯文本,包括删除链接和引用。

答案 7 :(得分:1)

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

或者,您可以从纯文本输出中提取第一段。

答案 8 :(得分:1)

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

var wikiURL = "https://en.wikipedia.org/w/api.php";
wikiURL += '?' + $.param({
    'action' : 'opensearch',
    'search' : 'your_search_term',
    'prop'  : 'revisions',
    'rvprop' : 'content',
    'format' : 'json',
    'limit' : 10
});

 $.ajax( {
    url: wikiURL,
    dataType: 'jsonp',
    success: function(data) {
       console.log(data);
    }
} );

答案 9 :(得分:0)

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

注意:这通过删除大多数发音来简化内容,主要在某些情况下在括号中。

答案 10 :(得分:-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>';
      }
   }
}

Wiki Summary Scrapper w/ PHP

Wiki scraper要点,可从带有PHP的Wikipedia或DB Pedia API中获取摘要。希望对您有所帮助。