分页表

时间:2017-09-21 23:29:02

标签: r rvest

我正在尝试为每个页面抓一张桌子,然后将它们全部放到一个数据框中。以下代码适用于第0至5页:

pages <- 0:5
urls <- paste0("http://www.expansionyempleo.com/buscar-trabajo-empleo/cid/3BC18A08D9BB661C9B65C93203B654EF/canal/0/pagenumber/",pages)

get_table <- function(url) {
url %>%
read_html() %>%
html_nodes(xpath = '//*[@id="mytable"]') %>% 
html_table()
}

results <- sapply(urls, get_table)
results <- rbind_all(results)
View(results)

但是,当我将页面从5增加到例如20时,我收到以下错误:

bind_rows_(x,id = id)中的错误:参数1必须具有名称

任何帮助非常感谢。感谢

1 个答案:

答案 0 :(得分:0)

我尝试了以下代码,但没有使用循环而不是应用错误:

pages <- 0:5
urls <- paste0("http://www.expansionyempleo.com/buscar-trabajo-empleo/cid/3BC18A08D9BB661C9B65C93203B654EF/canal/0/pagenumber/",pages)
result <- data.frame()

for (i in 1:length(urls)) {

   temp_result <- read_html(urls[i]) %>%
   html_nodes(xpath = '//*[@id="mytable"]') %>% 
   html_table() %>%
   as.data.frame()

   result <- rbind(result, temp_result)
}

但是,我认为页面结构改变或避免显示超过5页没有注册?! (我这里缺乏西班牙语知识)。 但是,如果您尝试使用页面&gt;打开网址5,显示以下弹出窗口:

  

Para poder seguir revisando las vacantes de empleo en nuestro sitio,   debes ingresar con tu电子邮件yContseña

所以你遇到的似乎是一个页面视图限制而不是编码问题。

你的代码非常酷btw(总是在循环中处理这类问题)并且似乎不是错误消息的原因。