在网站上,第一列是不同职业的名称(丹麦语),第二和第三行是颜色指示符
因此,我想制作一张看起来像这样的表:
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®ion=%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)
这给我留下了这个输出。
有人知道我可以从第二列和第三列中的颜色或颜色的任何其他指示符中提取颜色吗?
提前谢谢!
答案 0 :(得分:0)
最基本的解决方法是使用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