0

我看到有很多与主题相关的帖子,但我找不到解决方案(肯定是我的错)。

我正在尝试抓取https://tradingeconomics.com上发布的表格,并且作为新手,我正面临问题。

我想根据每页上方的菜单获取所有表格,以及按大陆划分的子表格。

然而,我试图将所有链接包含在一个 R 向量中,然后在那里继续抓取,但没有任何成功:

 ## 00. Importing the main link
trading_ec <- read_html("https://tradingeconomics.com/indicators")


## 01. Scraping the variables names
tr_ec_tabs <- trading_ec %>%
  html_nodes(".list-group-item a") %>%
  html_text(trim=TRUE)


## 02. Editing the vector 
tr_ec_tabs_lo <- tolower(tr_ec_tabs)
tr_ec_nospace <- gsub(" ", "-", tr_ec_tabs_lo)


## 03. Creating a .json indicators vector
json.indicators <- paste0("https://tradingeconomics.com/country-list/", tr_ec_nospace)

## 04. Function
table <- list()
for(i in seq_along(json.indicators))
{
  total_list <- readHTMLTable(json.indicators[i])
  n.rows <- unlist(lapply(total_list, function(t) dim(t)[1]))
  table[[i]] <- as.data.frame(total[[which.max(n.rows)]])
}




4

1 回答 1

1

如果您将循环替换为

table <- list()
for(i in seq_along(json.indicators[-102]))
{
  table[[i]] <- html_table(read_html(json.indicators[i]))[[1]]
  cat("Page", i, "of", length(json.indicators[-102]), "obtained.\n")
}

你会得到一个很好的数据框列表。您必须删除索引 102,因为它链接到没有表格的页面。因为它是一个需要一段时间才能运行的函数,所以我添加了一条cat语句,可以让您查看您已经抓取了多少页以及还剩下多少页。

于 2020-01-09T17:15:00.633 回答