使用RSelenium来获取表格中的背景色?

时间:2019-01-15 16:48:57

标签: r web-scraping rselenium

我正在从该网站的底部抓取“动态”表: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 :(得分: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