gpt4 book ai didi

r - 在 R 中使用 React JS 抓取网页

转载 作者:行者123 更新时间:2023-12-02 07:49:49 26 4
gpt4 key购买 nike


我正在尝试抓取下面的页面: https://metro.zakaz.ua/uk/?promotion=1
此页面包含 react 内容。
我可以用代码抓取第一页:

url="https://metro.zakaz.ua/uk/?promotion=1"

read_html(url)%>%
html_nodes("script")%>%
.[[8]] %>%
html_text()%>%
fromJSON()%>%
.$catalog%>%.$items%>%
data.frame

结果我拥有第一页的所有项目,但我不知道如何抓取其他页面。
如果有帮助,此 js 代码将移至其他页面:

document.querySelectorAll('.catalog-pagination')[0].children[1].children[0].click()

感谢您的帮助!

最佳答案

您将需要“RSelenum”来执行 headless 导航。

检查设置:How to set up rselenium for 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)

这是一个快速输出:

Output

关于r - 在 R 中使用 React JS 抓取网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51536339/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com