У меня есть R data.frame
со столбцом, содержащим веб-ссылки. Я хотел бы иметь код, который будет перемещаться по каждой из этих ссылок, очищать содержимое, а затем сохранять вывод в матрице. Я использую RSelenium
для получения исходного кода (поскольку веб-сайт использует Javascript), а затем rvest
для удаления содержимого (я уже определил соответствующий узел: "#descr").
Все хорошо, когда я рассматриваю каждую ссылку отдельно, например,
matscrap<-matrix(NA, nrow=nrow(df), ncol=1)
remote_driver$navigate(df$link[[1]])
matscrap[1,1] <- rvest::html_text(rvest::html_nodes(xml2::read_html(remote_driver$getPageSource()[[1]]), "#descr")))
дает мне ожидаемый результат: «описание», связанное со ссылкой, сохраняется в указанной ячейке. Я хотел бы автоматизировать процесс, используя для l oop. Мой код похож на
for (i in 1:nrow(df)) {
remote_driver$navigate(df$link[[i]])
matscrap[i,1]<-rvest::html_text(rvest::html_nodes(xml2::read_html(remote_driver$getPageSource()[[1]]), "#descr"))
}
и возвращает ошибку «замена имеет нулевую длину», возможно потому, что вывод
for (i in 1:nrow(df)) {
remote_driver$navigate(df$link[[i]])
print(rvest::html_text(rvest::html_nodes(xml2::read_html(remote_driver$getPageSource()[[1]]), "#descr")))
}
равен
character(0)
character(0)
character(0)
...
Я думаю, (но я не уверен), что источником проблемы является функция $navigate()
; во всяком случае, я не знаю, как это исправить. Есть идеи?
Спасибо за помощь,
Val