x [[1]]中的错误:下标越界 - R中的网络抓取

时间:2017-05-23 06:22:35

标签: r rvest

我正在尝试使用R(https://www.datacamp.com/community/tutorials/exploring-h-1b-data-with-r#gs.V8vcRAc

重新创建这个有效的网页抓取数据示例

然而,当我执行代码行all.h1b<-pblapply(all.urls, main)时 我进展到90%,然后收到错误消息:

x [[1]]中的错误:下标超出界限

完整代码是这样的:

library(jsonlite)
   library(rvest)
   library(pbapply) 
   library(data.table)
json.cities<-paste0('http://h1bdata.info/cities.php?term=', letters)
all.cities<-unlist(pblapply(json.cities,fromJSON))
city.year<-expand.grid(city=all.cities,yr=seq(2012,2016))
##city.year$city<-urltools::url_encode(as.character(city.year$city))
city.year$city <- lapply(as.character(city.year$city), URLencode , reserved = TRUE)
all.urls<-paste0('http://h1bdata.info/index.php?em=&job=&city=', city.year[,1],'&year=', city.year[,2])
main<-function(url.x){
  x<-read_html(url.x)
  x<-html_table(x)
  x<-data.table(x[[1]])
  return(x)
  Sys.sleep(5)
}


##Sys.sleep(5)
all.h1b<-pblapply(all.urls, main)

任何帮助都将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

通常,当您尝试从其边界访问数组时会出现此错误。 有时,当包版本不是最新版本或过于新颖时,也会发生这种情况。 我也在尝试代码,让我们看看它是否有效或是否有同样的问题。

尝试这些更改

library(jsonlite)
   library(rvest)
   library(pbapply) 
   library(data.table)
json.cities<-paste0('http://h1bdata.info/cities.php?term=', letters)
all.cities<-unlist(pblapply(json.cities,fromJSON))
city.year<-expand.grid(city=all.cities,yr=seq(2012,2016))
city.year$city<-urltools::url_encode(as.character(city.year$city))
city.year$city <- lapply(as.character(city.year$city), URLencode , reserved = TRUE)
all.urls<-paste0('http://h1bdata.info/index.php?em=&job=&city=', city.year[,1],'&year=', city.year[,2])
main<-function(url.x){
  x<-read_html(url.x)
  x<-html_table(x)
  x<-data.table(x[1])
  return(x)
  Sys.sleep(5)
}

all.h1b<-pblapply(all.urls, main)

此代码应该可以使用!