Получение цвета фона в таблице с помощью RSelenium? - PullRequest
0 голосов
/ 15 января 2019

Я очищаю «динамическую» таблицу внизу этого сайта: http://arbejdsmarkedsbalancen.dk/da/Historik.aspx?group=Akademisk%20arbejde&region=%7CNordjylland%7C&jobOpportunities=|||||||||||||5|3|2|4|1|&chart=Skemaoversigt&years=|2015-1|2015-2|

На сайте это выглядит так: первый столбец - это название другой профессии (на датском), а второй и третий ряд - цветовой индикатор enter image description here

Следовательно, я хочу создать таблицу, которая выглядит примерно так:

1. column                          2. column  3. column
Adjunkt, Humaniora                 yellow     yellow
Adjunkt, Naturvidenskab Og Teknik  yellow     yellow
....                               ....       .... 

и т. Д.

Поскольку я не могу найти структуру таблицы в html-исходном коде, я предположил, что она была сгенерирована с помощью другого скрипта и должна была быть извлечена с помощью RSelenium.

Пока мой код выглядит так

library(RSelenium)
library(XML)

server <- rsDriver(browser = "firefox")
remDr <- server$client

url <- "http://arbejdsmarkedsbalancen.dk/da/Historik.aspx?group=Akademisk%20arbejde&region=%7CNordjylland%7C&jobOpportunities=|||||||||||||5|3|2|4|1|&chart=Skemaoversigt&years=|2015-1|2015-2|"
remDr$navigate(url)

list <- readHTMLTable(remDr$getPageSource()[[1]], encoding="UTF-8")
final.table <- list[[1]]

View(final.table)

Это оставляет меня с этим выводом.

output

Кто-нибудь знает, могу ли я извлечь цвет из цвета или любой другой индикатор цвета во втором и третьем столбце?

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

1 Ответ

0 голосов
/ 16 января 2019

Самый простой способ - использовать rvest вместо XML-пакетов, решение выглядит следующим образом:

page <- read_html(remDr$getPageSource()[[1]])
table.1 <- page %>%  html_nodes("table") %>% html_table(fill = TRUE)
table.1 <- table.1[[1]]
table.1 <- table.1[-nrow(table.1),]
colnames(table.1) <- c("Stilling","firsthalf","secondhalf")

table.2 <- page %>%  html_nodes("td") %>% html_attr("style") %>% gsub("background-color:", "", .)
table.2.a <- table.2[seq(1,length(table.2),3)]
table.2.b <- table.2[seq(2,length(table.2),3)]
table.2.b <- table.2.b[-length(table.2.b)] 
table.2.c <- table.2[seq(3,length(table.2),3)]
table.2.c <- table.2.c[-length(table.2.c)]

table.1$firsthalf <- table.2.b
table.1$secondhalf <- table.2.c
...