维基百科API调用仅指定匿名编辑,但我回复了许多非匿名编辑

时间:2014-07-19 21:50:29

标签: json r api wikipedia wikimedia

我正试图从维基媒体API中提取匿名编辑的详细信息,如下所示:

http://en.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcstart=2014-01-01T00%3A00%3A00Z&rcdir=newer&rcnamespace=0&rcprop=user%7Ctimestamp%7Ctitle&rcshow=anon&rclimit=100&generator=allpages&gapnamespace=0&gaplimit=2

请注意“rcshow = anon”参数。

它在API沙箱中运行得很好:https://www.mediawiki.org/wiki/Special:ApiSandbox#action=query&list=recentchanges&format=json&rcstart=2014-01-01T00%3A00%3A00Z&rcdir=newer&rcnamespace=0&rcprop=user|timestamp|title&rcshow=anon&rclimit=100&generator=allpages&gapnamespace=0&gaplimit=2

但是当我尝试将其导入R时,我发现我得到了许多非匿名编辑:

library(rjson)
json_file <- "http://en.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcstart=2014-01-01T00%3A00%3A00Z&rcdir=newer&rcnamespace=0&rcprop=user%7Ctimestamp%7Ctitle&rcshow=anon&rclimit=100&generator=allpages&gapnamespace=0&gaplimit=2"
json_data <- fromJSON(file = json_file)
user <- vector()
user <- sapply(json_data$query$recentchanges, function(x) c(user, x$user))
user

像这样:

  [1] "ValterVBot"                        
  [2] "67.87.234.41"                      
  [3] "ValterVBot"                        
  [4] "86.143.229.147"                    
  [5] "Luan Francisco"                    
  [6] "לערי ריינהארט"                     
  [7] "Чаховіч Уладзіслаў"                
  [8] "Soulkeeper"                        
  [9] "ValterVBot"                        
 [10] "Soulkeeper"   

知道发生了什么以及如何获得一组匿名编辑?

1 个答案:

答案 0 :(得分:2)

首先,它在API沙箱中“无效”,您只需使用the sandbox on the English Wikipedia,而不是mediawiki.org。

如果仔细查看结果,您会发现所有非匿名条目都有type external。这意味着对那篇文章的维基数据页面进行了编辑,这些文章显示为匿名(我认为这是因为进行更改的维基数据用户可能不存在于本地维基上)。要删除这些修改,请在查询中设置rctype以过滤掉external

http://en.wikipedia.org/w/api.php?action=query&list=recentchanges&format=json&rcstart=2014-01-01T00%3A00%3A00Z&rcdir=newer&rcnamespace=0&rcprop=user|timestamp|title&rcshow=anon&rclimit=100&generator=allpages&gapnamespace=0&gaplimit=2&rctype=edit