Webscraping в R не показывает узлы

#html #r #rest #web-scraping

#HTML #r #остальное #веб-очистка

Вопрос:

Я пытаюсь получить список всех статей и цен с этого сайта, используя rvest. Это довольно простая задача, но я продолжаю получать пустой список.

До сих пор я использовал приведенный ниже код безрезультатно.

Есть ли что-то, что я упускаю или делаю неправильно?

 url <- c("https://www.pedidosya.com.do/restaurantes/santo-domingo-d-n/supermercados-bravo-menu")

articulo <- read_html(url) %>% 
  html_nodes('.shelves_product_name') %>% 
  html_attrs()
 

Ответ №1:

Веб-страница, которую вы пытаетесь очистить, является динамической, поэтому вам нужно будет использовать пакет, подобный RSelenium.

Приведенный ниже код должен работать:

 library(tidyverse)
library(RSelenium)
library(rvest)
library(stringr)
    
url <- c("https://www.pedidosya.com.do/restaurantes/santo-domingo-d-n/supermercados-bravo-menu")

rD <- rsDriver(browser = "chrome")
remDr <- rD[["client"]]

remDr$navigate(url)
pg <- read_html(remDr$getPageSource()[[1]])

 product_name <- pg %>% html_nodes(".shelves_product_name") %>% html_text()
 product_price <- pg %>% html_nodes(".price") %>% html_text() %>%
   str_remove_all("n") %>%
   str_squish()
  
df <- data.frame(Name = product_name, Price = product_price)

remDr$close()
rD$server$stop()
rm(rD, remDr)
gc()

system("taskkill /im java.exe /f", intern=FALSE, ignore.stdout=FALSE)
 

Комментарии:

1. Отлично. Я понятия не имел, что динамические веб-сайты — это вещь. Сейчас я провожу некоторые исследования по RSelenium, чтобы расширить свои знания. Спасибо, мистер Блу, вы мне очень помогли.