Web Scraping в R |Невозможно извлечь информацию под определенным узлом, используя rvest - PullRequest
2 голосов
/ 29 октября 2019

Я пытаюсь извлечь немного информации из узла /html/head/script[16] с веб-сайта ( здесь ), но не могу этого сделать.

nykaa <- "https://www.nykaa.com/biotique-bio-kelp-protein-shampoo-for-falling-hair-intensive-hair-growth-treatment-conf/p/357142?categoryId=1292&productId=357142&ptype=product&skuId=39934"

obj <- read_html(nykaa)

extracted_json <- obj %>% 
  html_nodes(xpath = "/html/head/script[16]") %>% 
  html_text(trim = TRUE)

В настоящее время мой вывод для приведенного выше кода является нулевым. Но я хотел бы извлечь данные из вышеупомянутого узла организованным способом.

1 Ответ

1 голос
/ 29 октября 2019

Вы можете использовать регулярное выражение, чтобы получить объект javascript внутри этого тега сценария, а затем перейти к jsonlite и анализировать. Вам нужно немного поболтать, чтобы получить то, что вы хотите от этого, но все это есть

library(rvest)
library(magrittr)
library(stringr)
library(jsonlite)

p <- read_html('https://www.nykaa.com/biotique-bio-kelp-protein-shampoo-for-falling-hair-intensive-hair-growth-treatment-conf/p/357142?categoryId=1292&productId=357142&ptype=product&skuId=39934') %>% html_text()
all_data <- jsonlite::parse_json(str_match_all(p,'window\\.__PRELOADED_STATE__ = (.*)')[[1]][,2])
...