Как определить количество проданного продукта, используя rvest в R - PullRequest
1 голос
/ 02 ноября 2019

Я хочу собрать количество продуктов, проданных с помощью Rvest, с веб-страницы торговой площадки.

Снимок экрана

Я использовал этот код, но он не возвращал значения.

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 "

Как настроить код для извлечения этого числа?

Большое спасибо заранее!

1 Ответ

0 голосов
/ 02 ноября 2019

Он извлекается динамически из конечной точки статистики продукта, которую вы можете найти на вкладке сети. Вы могли бы разбить строку на части или просто вычленить часть, давая проданный номер. Вам нужно передать идентификатор продукта, который вы можете получить из запроса на исходный 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]
...