如何在 R 中使用 rvest 抓取销售的产品数量

How to scrape number of product sold using rvest in R

我想从市场网页上抓取使用 Rvest 销售的产品数量。

Screenshoot

我使用了这段代码,但没有返回任何值。

library(rvest)

doc <- read_html("https://www.tokopedia.com/berasprimasari/beras-bunga-25kg")

sold <- html_nodes(doc, ".rvm-product-info--item_value.mt-5.item-sold-count") %>%
    html_text()

sold

------------
RESULT:
[1] "     "

EXPECTED:
[1] " 378 "

如何调整我的代码以提取该号码?

非常感谢!

它是从您可以在网络选项卡中找到的产品统计端点动态检索的。您可以将字符串拆分或简单地用正则表达式给出售出数量的部分。您需要将可以从请求中获取的产品 ID 传递给原始 url.

library(stringr)
library(magrittr)
library(httr)

get_product_id <- function(url){
  headers = c('User-Agent' = 'Mozilla/5.0')
  s <- read_html(httr::GET(url, httr::add_headers(.headers=headers)))%>%html_text()
  id <- str_match_all(s,'product_id\s+=\s+(\d+);')[[1]][,2]
  return(id)
}

url = 'https://www.tokopedia.com/berasprimasari/beras-bunga-25kg'
p <- read_html(paste0('https://js.tokopedia.com/productstats/check?pid=',get_product_id(url),'&callback=show_product_stats&_='))%>% 
     html_text()
number_sold <- str_match_all(p,'item_sold\":(\d+)')[[1]][,2]