随机文章API调用正在返回用户对话页面?

时间:2013-11-23 06:52:13

标签: javascript wikipedia-api mediawiki-api

我正在尝试从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”拉随机文章,但似乎并非如此。我如何让它按预期工作?

2 个答案:

答案 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