Извлечение текста / числа из тега класса tspan HTML с помощью R - PullRequest
2 голосов
/ 20 февраля 2020

Я пытаюсь извлечь номер текущего производства с этого сайта http://okg.se/sv/Produktionsinformation/ (в синей области ниже).

Вот часть кода HTML, которую мне нужно использовать:

<tspan dy="0" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);">518</tspan>

Пример кода, который я использовал:

url <- "http://okg.se/sv/Produktionsinformation//"
download.file(url, destfile = "scrapedpage.html", quiet=TRUE)
content <- read_html("scrapedpage.html")
content %>% html_nodes(".content__info__item__value")

Но полученный результат показывает, что нет доступных узлов:

{xml_nodeset (0)}

есть какие-либо идеи о том, как решить эту проблему?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 20 февраля 2020

html, который вы видите в браузере, был обработан javascript, поэтому он не совпадает с html, который вы видите с rvest.

Необработанные данные, которые вы ищете, на самом деле хранятся в атрибутах div с идентификатором "gauge", поэтому вы получите это так:

library(rvest)
#> Loading required package: xml2

"http://okg.se/sv/Produktionsinformation//" %>%
read_html()                                 %>%
html_node("#gauge")                         %>% 
html_attrs()                                %>%
`[`(c("data-current", "data-max"))
#> data-current     data-max 
#>        "553"       "1450"

Обратите внимание, что вы не Не нужно сохранять html на локальном диске для его обработки. Вы можете прочитать его непосредственно из inte rnet, указав URL-адрес read_html

, созданный в 2020-02-20 пакетом prex (v0.3.0)

2 голосов
/ 20 февраля 2020

Я не совсем уверен, какое значение вам нужно, но эта работа

librar(rvest)

# page url
url <- "http://okg.se/sv/Produktionsinformation/"

# current value
read_html(url) %>%
  html_nodes(".footer__gauge") %>%
  html_attr("data-current")

# Max value
read_html(url) %>%
  html_nodes(".footer__gauge") %>%
  html_attr("data-max")

...