Я видел ряд вопросов, связанных с использованием rvest
и httr
для очистки данных с динамических веб-страниц в R;однако проблема, с которой я сталкиваюсь, связана со скоростью / производительностью при очистке сотен страниц.В частности, я получаю character(0)
результаты при сортировке ценовых и текстовых данных для определенных URL-адресов в списке URL-адресов ~ 1,5 КБ;однако, если я затем повторно запустите те же URL-адреса, которые вернули character(0)
(без изменения моего кода), я получу ожидаемые результаты.
Пример моей функции для очистки цен:
library(tidyverse)
library(rvest)
library(httr)
priceScraper <- function(url){
res <- GET(url)
doc <- read_html(content(res, as = "text"))
price <- doc %>% html_nodes("#price") %>% html_text()
return(price)
}
webPrices <- lapply(URLs_List, priceScraper)
Мой первый проход по описанному выше займет ~ 50 минут для URL-адресов 1,5 КБ и имеет ~ 75% успеха.Если затем я возьму 25% неудачных строк (которые возвращают character(0)
) и повторно запусту их с точно таким же кодом, я получу ожидаемый результат.Итак, мои вопросы:
1) Есть ли способ обеспечить успешный сбор всех данных с первой попытки?Возможно, мне нужно использовать RSelenium
для полной загрузки целевой страницы?
2) Есть ли способ повысить производительность, особенно если в функцию введена задержка для обеспечения полной загрузки веб-страницы?Есть ли способ проверить, что веб-страница полностью загружена?
Большое спасибо всем вам, гуру разработчиков R, у которых есть какие-либо идеи по этой теме!