Циклическая навигация с использованием RSelenium - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть 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

...