Estoy intentando raspar la página siguiente: https://metro.zakaz.ua/uk/?promotion=1
Esta página con contenido de reacción.
Puedo raspar la primera página con el código:
url="https://metro.zakaz.ua/uk/?promotion=1"
read_html(url)%>%
html_nodes("script")%>%
.[[8]] %>%
html_text()%>%
fromJSON()%>%
.$catalog%>%.$items%>%
data.frame
Como resultado, tengo todos los elementos de la primera página, pero no sé cómo raspar otras páginas.
Este código js se mueve a otra página si eso puede ayudar:
document.querySelectorAll('.catalog-pagination')[0].children[1].children[0].click()
¡Gracias por cualquier ayuda!
Necesitará 'RSelenum' para realizar la navegación sin cabeza.
Consulte la configuración: ¿Cómo configurar rselenium para R?
library(RSelenium)
library(rvest)
library(tidyvers)
url="https://metro.zakaz.ua/uk/?promotion=1"
rD <- rsDriver(port=4444L, browser="chrome")
remDr <- rD[['client']]
remDr$navigate(url)
### adjust items you want to scrape
src <- remDr$getPageSource()[[1]]
pg <- read_html(src)
tbl <- tibble(
product_name = pg %>% html_nodes(".product-card-name") %>% html_text(),
product_info = pg %>% html_nodes(".product-card-info") %>% html_text()
)
## to handle pagenation (tested with 5 pages) - adjust accordinly
for (i in 2:5) {
pages <- remDr$findElement(using = 'css selector',str_c(".page:nth-child(",i,")"))
pages$clickElement()
## wait 5 sec to load
Sys.sleep(5)
src <- remDr$getPageSource()[[1]]
pg <- read_html(src)
data <- tibble(
product_name = pg %>% html_nodes(".product-card-name") %>% html_text(),
product_info = pg %>% html_nodes(".product-card-info") %>% html_text()
)
tbl <- tbl %>% bind_rows(data)
}
nrow(tbl)
head(tbl)
tail(tbl)
aquí hay una salida rápida:
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras