Я хотел бы настроить цикл для автоматизации некоторых веб-скрепок на нескольких страницах. Пока что это код, который у меня есть для одной итерации:
s <- html_session("https://www.hcdn.gob.ar/proyectos/resultados-buscador.html?")
s <- s %>% jump_to("?pagina=5") %>% read_html()
new <- s %>% html_nodes('div.dp-metadata span') %>% html_text()
type.2 <- s %>% html_nodes('h4') %>% html_text()
title <- s %>% html_nodes('div.dp-texto') %>% html_text()
new <- gsub("Iniciado en: ", "", new)
new <- gsub("Fecha: ", "", new)
new <- gsub("Expediente Diputados:", "", new)
new <- gsub("Expediente Senado:", "", new)
new<- new [-c(3, 7, 11, 15, 19, 23, 27, 31, 35, 39, 43, 47, 51, 55, 59, 63, 67, 71, 75, 79)]
chamber <- new[c(1, 4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40, 43, 46, 49, 52, 55, 58)]
billnum <- new[c(2, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59)]
fecha <- new[c(3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60)]
new2 <- data.frame(chamber, billnum, fecha, title, type.2)
Часть, которая должна измениться - это число после "pagina =". Однако я попытался создать следующий упрощенный цикл, и он только что выдал ошибку:
new4 <- data.frame(matrix(nrow=40, ncol=2))
colnames(new4) <- c("title", "type")
for (i in 1:2) {
s <- html_session("https://www.hcdn.gob.ar/proyectos/resultados-buscador.html?")
s <- s %>% jump_to("?pagina=", i) %>% read_html()
type.2 <- s %>% html_nodes('h4') %>% html_text()
title <- s %>% html_nodes('div.dp-texto') %>% html_text()
new4[i, 1] <- title
new4[i, 2] <- type.2
}
Опять же, этот упрощенный цикл, который очищает только две из пяти необходимых мне функций, не работает и возвращает ошибку: Ошибка в f (init, x [[i]])): is.request (y) не TRUE. Я предполагаю, что что-то не так с запуском команд html_session () и jump_to () в цикле. Я хотел бы знать, как автоматизировать это в цикле, чтобы избежать ручной очистки нескольких тысяч страниц.
Я даже пытался создать вектор с использованием lapply, но я не очень уверен в своем кодировании функций, и все шаблоны, которые я видел, были простыми командами read_html (), и я не совсем уверен, как включит в функцию команды html_session () и jump_to ().