rvest веб-парсинг возвращает пустой фрейм данных при попытке собрать информацию о цене продукта - PullRequest
2 голосов
/ 18 июня 2020

Я пытаюсь использовать 'rvest', чтобы получить информацию о ценах на продукты из: https://www.lowes.com/pl/Lawn-garden-hand-tools-Outdoor-tools-equipment-Outdoors/4294612737?goToProdList=true&int_cmp=LawnGardenHandTools: C: На открытом воздухе: Merch: shop_all_copy . Я использую следующий код:

library(rvest)
library(tidyverse)

url <- "https://www.lowes.com/pl/Lawn-garden-hand-tools-Outdoor-tools-equipment-Outdoors/4294612737?goToProdList=true&int_cmp=LawnGardenHandTools:C:Outdoors:Merch:shop_all_copy"

html <- read_html(url)

price <- html %>%
  html_node('body') %>%
  xml_find_all("//span[contains(@class, 'h5 js-price v-spacing-mini art-pl-price')]") %>% 
  html_text() %>%
  data.frame()

Однако - это возвращает пустой фрейм данных.

Любой совет будет очень признателен.

1 Ответ

0 голосов
/ 18 июня 2020

rvest может очищать только stati c HTML контент.

Большинство современных коммерческих веб-сайтов используют динамический c веб-контент, генерируемый на лету JavaScript.

Чтобы очистить такие веб-сайты, вам сначала нужно заставить сайт генерировать HTML контент, который вы ищете, а затем вы сможете очистить его с помощью rvest.

Чтобы сделать поэтому вам нужно использовать RSelenium , который имитирует браузер и позволяет вам перемещаться по сайту программно.

RSelenium требует установки Docker Selenium server .

В конце этого долгого и интересного путешествия вам придется проявить изобретательность, чтобы веб-сайт не подумал, что его запрашивает робот:
bot Captcha

...