Wikipedia API返回排序数据而不是随机数据

时间:2015-03-19 15:18:24

标签: api mediawiki wikipedia wikipedia-api mediawiki-api

我正在尝试使用Wikipedia API沙箱从类别生成随机文章。

http://en.wikipedia.org/w/api.php?action=query&list=random&format=jsonfm&rnnamespace=0&generator=categorymembers&gcmtitle=Category%3ATeam%20sports&gcmnamespace=0

但无论何时进行查询,文章都按字母顺序而不是随机返回。 每次都会返回同一组文章。每次检索的文章数量远远低于该类别中文章的总数。查询中的错误是什么?

4 个答案:

答案 0 :(得分:2)

将列表API与生成器一起使用是没有意义的。大多数查询API将一组页面名称/ ID作为输入,此参数可以替换为生成器。列表API不需要这样的输入,因此它们不会受到影响。

实际发生的是随机API在random键下生成单个页面(因为其limit参数默认为1);该页面是正确随机的并随每个请求而变化,但它不限于类别(列表API不起作用)。生成器API的返回(当然,这不是随机的)显示在pages键下,因为传递给title参数中的随机API的任何页面都只是在该键下返回。

你可以做的是调用Special:RandomInCategory(还没有等效的API),只需重试,直到你得到一个主命名空间页面。

答案 1 :(得分:1)

https://www.mediawiki.org/wiki/API:Random

  

页面按固定顺序列出,只有起点是随机的。这意味着,例如,如果"主页"是您列表中的第一个随机页面,"虚构猴子列表"将永远是第二,"瓦努阿图邮票的人员名单"第三,等等。

答案 2 :(得分:1)

生成器给你一个小输入集,我不认为随机适用于生成器输入...

答案 3 :(得分:0)

random作为值传递给list参数不会影响文章的顺序,而是会影响返回的文章。

这意味着一个不同的"随机"每次都会返回一组文章,并不一定意味着它们将以随机顺序呈现。

在相关的说明中,最有可能解释为什么在每个查询上获得相同数据集的原因是您限制了查询的范围(使用其他参数),以便可能的文章总数为小于最大数量(rnlimit),因此每次返回相同的集合。

限制返回的文章数量,或扩大搜索查询的范围。

有关工作示例,请参阅此查询:https://en.wikipedia.org/w/api.php?action=query&list=random&rnlimit=5&format=json

您可以在MediaWiki documentation上找到有关使用情况的更多信息。