Опираясь на ответ на former question of mine я выскабливание this website для связи с Rselenium-пакета, используя следующий код:соскабливания HTML из вектора строк в R
startServer()
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4444,
browserName = "chrome")
remDr$open(silent = TRUE)
remDr$navigate("http://karakterstatistik.stads.ku.dk/")
Sys.sleep(2)
webElem <- remDr$findElement("name", "submit")
webElem$clickElement()
Sys.sleep(5)
html_source <- vector("list", 100)
i <- 1
while (i <= 100) {
html_source[[i]] <- remDr$getPageSource()
webElem <- remDr$findElement("id", "next")
webElem$clickElement()
Sys.sleep(2)
i <- i + 1
}
Sys.sleep(3)
remDr$close()
Когда я хочу, чтобы скоблить выше создана вектор строк (html_source), используя rvest-пакет, я получаю сообщение об ошибке, как источник не является HTML-файл:
kar.links = html_source %>%
read_html(encoding = "UTF-8") %>%
html_nodes("#searchResults a") %>%
html_attr("href")
Я попытался свернуть вектор и пытался искать струнный-to HTML-конвертер, но ничего не работает. Я чувствую, что решение лежит где-то в том, как я сохраняю источники страниц в цикле.
EDIT: исправлен его это менее красивое решение:
links <- vector("list", 100)
i <- 1
while (i <= 100) {
links[[i]] <- html_source[[i]][[1]] %>%
read_html(encoding = "UTF-8") %>%
html_nodes("#searchResults a") %>%
html_attr("href")
i <- i + 1
}
col_links<- links %>%
unlist()
Спасибо. Метод html_source [[1]] [[1]] работает как шарм, поэтому я могу извлечь ссылки из каждого объекта в списке. Функция lapply() работает также. Итак, чтобы получить ссылки от каждого из 100 объектов, мне нужно зацикливать функции hrvest? Или есть другой способ, чтобы это можно было сделать одним простым шагом? _EDIT: нажать слишком быстро_ – ScrapeGoat
Вы можете свернуть список, используя 'unlist', а затем использовать' paste (..., collapse = "") 'для получения одной (очень) длинной символьной строки, которую вы можете проанализировать для ссылок , –
Используя следующий код w/и без функции lapply, по какой-либо причине генерирует вектор из 179 ссылок? плоские <-lapply (html_source, '[[', 1)%>% unlist()%>% пасты (коллапс = '') ссылки <- flat %>% read_html (кодирование = "UTF-8")%>% html_nodes ("# searchResults a")%>% html_attr ("href") – ScrapeGoat