全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
2852 6
2020-03-06
毕业论文,需要搜集国际贸易方面的数据,UNcomtrade上面数据量太大了不能直接下载,所以打算用R把数据弄下来

本科没学过R,真的小白,想请问下照着下面的代码可以加载出UNcomtrade的数据,但是当我把Classification Code从“TOTAL”改成“ALL”(因为要所有商品的数据)之后,就显示不能下载(具体原因如图)。查了一下说是当前json字符串有误,没有正常拼接。想请教一下各位为什么改了之后就没办法显示数据了,且应该怎么调整

下面是从的代码:

library(rjson)
string <- "http://comtrade.un.org/data/cache/partnerAreas.json"
reporters <- fromJSON(file=string)
reporters <- as.data.frame(t(sapply(reporters$results,rbind)))
get.Comtrade <- function(url="http://comtrade.un.org/api/get?"
                         ,maxrec=50000
                         ,type="C"
                         ,freq="A"
                         ,px="HS"
                         ,ps="1993"
                         ,r
                         ,p
                         ,rg="all"
                         ,cc="ALL"(这里之前是TOTAL,可以显示数据
                         ,fmt="json"
)
{
  string<- paste(url
                 ,"max=",maxrec,"&" #maximum no. of records returned
                 ,"type=",type,"&" #type of trade (c=commodities)
                 ,"freq=",freq,"&" #frequency
                 ,"px=",px,"&" #classification
                 ,"ps=",ps,"&" #time period
                 ,"r=",r,"&" #reporting area
                 ,"p=",p,"&" #partner country
                 ,"rg=",rg,"&" #trade flow
                 ,"cc=",cc,"&" #classification code
                 ,"fmt=",fmt        #Format
                 ,sep = ""
  )

  if(fmt == "csv") {
    raw.data<- read.csv(string,header=TRUE)
    return(list(validation=NULL, data=raw.data))
  } else {
    if(fmt == "json" ) {
      raw.data<- fromJSON(file=string)
      data<- raw.data$dataset
      validation<- unlist(raw.data$validation, recursive=TRUE)
      ndata<- NULL
      if(length(data)> 0) {
        var.names<- names(data[[1]])
        data<- as.data.frame(t( sapply(data,rbind)))
        ndata<- NULL
        for(i in 1:ncol(data)){
          data[sapply(data[,i],is.null),i]<- NA
          ndata<- cbind(ndata, unlist(data[,i]))
        }
        ndata<- as.data.frame(ndata)
        colnames(ndata)<- var.names
      }
      return(list(validation=validation,data =ndata))
    }
  }
}

library("rjson")
s1 <- get.Comtrade(r="156", p="0")
附件列表
微信图片_20200305231557.png

原图尺寸 18.62 KB

微信图片_20200305231557.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-3-28 21:34:22
UN的数据都可以直接下载PDF或者CSV,为啥要爬呢?一般我们爬的都是无法直接下载的。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-28 23:53:51
llb_321 发表于 2020-3-28 21:34
UN的数据都可以直接下载PDF或者CSV,为啥要爬呢?一般我们爬的都是无法直接下载的。
哈哈哈因为之前就是数据量太大了没法直接下载,所以打算爬下来
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-29 08:32:46
理解。
确实cc选择all,返回结果是Result too large: you do not have permissions to access such a large resultset.Maximum resultset is: 100000。问题在于permission,没有这个的话,爬虫也解决不了吧。爬虫不是hacker的水平。哈
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-29 21:00:11
llb_321 发表于 2020-3-29 08:32
理解。
确实cc选择all,返回结果是Result too large: you do not have permissions to access such a larg ...
是的,后来发现爬虫也有最大限制。。。。所以应该是权限问题
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-3-29 21:44:18
我昨天用selenium试了下,也没成。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群