我想获得维基百科文章的第一段。
要执行此操作的API查询是什么?
答案 0 :(得分:43)
这些是关键参数。
prop=revisions&rvprop=content&rvsection=0
rvsection = 0指定仅返回引导部分。
见这个例子。
要获取HTML,您可以使用类似的use action = parse http://en.wikipedia.org/w/api.php?action=parse§ion=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§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>';
}
}
}
Wiki scraper要点,可从带有PHP的Wikipedia或DB Pedia API中获取摘要。希望对您有所帮助。