如何在 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]
我想从市场网页上抓取使用 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]