Raspado de página web con react JS en R

jyjek


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!

Ryanhnkim

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:

Salida

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

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Raspado de página web con sopa hermosa

Raspado de contenido representado por Javascript en R desde una página web sin URL única

El sitio web de raspado web con BeautifulSoup y Selenium no detectará elementos de tabla en la página web

raspado web en r (con bucle)

Descargar csv con el botón de raspado de Python en una página web dinámica

Descargar csv con el botón de raspado de Python en una página web dinámica

Expandir una sección contraída de una página web automáticamente para el raspado web en R

Raspado de la página web json

raspado de datos de la página web con python 3, primero debe iniciar sesión

Raspado con BeautifulSoup: raspado de una columna específica en una tabla, desde una página HTML

Columnas de raspado web desde web con R

Selenium- BS4: Problema de enfrentamiento en la página web de raspado

Raspado de bucle en la lista con la página siguiente usando Selenium

¿Cómo eliminar datos de una página web que usa react.js con Selenium en Python?

Rápido raspado de una página web usando expresiones regulares o una alternativa

Raspado de páginas web con Beautiful soup

El raspado web de cierta página web no puede finalizar

raspado de datos de tabla de una página web

Bucle de página de raspado web de Python

Raspado de archivos PDF de una página web

Raspado de Python de la página web JSON

Raspado de Python de la página web JSON

Raspado de varias tablas de la página web Python

rvest: Tabla de raspado de la página web

Raspado de tabla no interactuable de página web dinámica

Excluir el raspado de retweets con twitteR en r

Raspado de página dinámica con solicitudes

Raspado Web de Python | ¿Cómo raspar varias URL con diferentes números de página a través de Beautifulsoup?

Cómo obtener todas las URL de los listados desde la página principal con el raspado web de Python