Стоимость парсинга веб-страниц с использованием xml - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь отказаться от следующего: 13,486 Kč от: https://www.aofis.cz/informace-pro-klienty/elba-opf/

По какой-то причине следующий код не может найти номер. Я скорее новичок в этом ie, так что, возможно, это потому, что строка в xml_find_all неверна. Кто-нибудь может узнать, почему?

library(xml)
library(xml2)

page <- "https://www.aofis.cz/informace-pro-klienty/elba-opf/"  
read_page <- read_html(page)

Price <- read_page %>% 
  rvest::html_nodes('page-content') %>%
  xml2::xml_find_all("//strong[contains(@class 'sg_selected')]") %>% 
  rvest::html_text()

Price

Спасибо !! Михаил

1 Ответ

1 голос
/ 16 июня 2020

Код html, который вы видите на панели разработчика браузера (или гаджете выбора), не совпадает с контентом, который доставляется в ваш сеанс R. На самом деле это файл javascript, который затем создает веб-страницу. Вот почему ваш вызов rvest не находит правильный узел html: в обрабатываемой строке нет узлов html !

Есть несколько разных способы получить нужную информацию, но, возможно, лучше всего просто получить денежные значения из кода javascript с помощью регулярного выражения:

page <- "https://www.aofis.cz/informace-pro-klienty/elba-opf/"  
read_page <- httr::content(httr::GET(page), "text")
stringr::str_extract_all(read_page, "\\d+\\.\\d+ K")[[1]][1]
#> [1] "13.486 K"
...