我正在尝试为每个页面抓一张桌子,然后将它们全部放到一个数据框中。以下代码适用于第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必须具有名称
任何帮助非常感谢。感谢
答案 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(总是在循环中处理这类问题)并且似乎不是错误消息的原因。