Производительность rvest / httr при очистке многих динамических страниц - PullRequest
0 голосов
/ 13 февраля 2019

Я видел ряд вопросов, связанных с использованием 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, у которых есть какие-либо идеи по этой теме!

...