1

我正在尝试从 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"   

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

4

1 回答 1

2

首先,它在 API 沙箱中也“不起作用”,您只需要使用英文 Wikipedia 上的沙箱,而不是 mediawiki.org。

如果您仔细查看结果,您会注意到所有非匿名条目都有type external. 这意味着这些是对该文章的 Wikidata 页面的编辑,显示为匿名(我认为这是因为进行更改的 Wikidata 用户可能不存在于本地 wiki 上)。要摆脱这些编辑,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=编辑

于 2014-07-20T09:57:04.620 回答