#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, чтобы расширить свои знания. Спасибо, мистер Блу, вы мне очень помогли.