我正在尝试从WikiMedia API中随机抽取文章,但我的代码似乎只抓取用户对话页面...
$(document).ready(function(){
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&prop=extracts&exchars=500&format=json&callback=?", function (data) {
console.log(data.query.pages);
});
});
我读到“generator = random”拉随机文章,但似乎并非如此。我如何让它按预期工作?
答案 0 :(得分:14)
如果只想获取命名空间0中的页面,则需要指定rnnamespace
参数。由于您使用list=random
作为生成器,因此拼写为grnnamespace
:
答案 1 :(得分:1)
API不允许您直接获取随机页面;随机生成器当前从任何命名空间中获取随机页面。 编辑:我立即纠正;显然你可以传递一个grnamespace
参数,svick mentions in their answer。我会在下面留下原来的答案。
如何进行两次API调用?
首先,拨打电话以获取随机页面列表:
https://en.wikipedia.org/w/api.php?action=query&list=random&rnnamespace=0&rnlimit=5&format=json
根据您想要的页数调整rnlimit
参数。
要获取wiki-source,请使用以下内容(将TITLE1,TITLE2等替换为您的实际标题):
https://en.wikipedia.org/w/api.php?action=query&titles=TITLE1|TITLE2&prop=revisions&rvprop=content&format=json
对于页面的HTML副本,请使用以下内容(将TITLE替换为您的实际标题,并重复调用API):
https://en.wikipedia.org/w/api.php?action=parse&page=TITLE&prop=text&format=json
当然,直接调用Special:Random可能更容易,屏幕抓取:
https://en.wikipedia.org/wiki/Special:Random