使用 R 进行网页抓取 html table

Webscraping html table using R

我已经从 Whosebug 的用户那里得到了一些帮助,试图解决这个问题。然而,我运行陷入了新的麻烦:

URL <- "http://karakterstatistik.stads.ku.dk/Histogram/ASOB05038E/Summer-2015"
pg <- read_html(URL)

get_val <- function(x, label) {
xpath <- sprintf(".//table/tr/td[contains(., '%s')][1]/following-sibling::td", label)
html_nodes(x, xpath=xpath) %>% 
html_text() %>% 
trimws()
}

library("stringr")
trimmed = get_val(pg, "Karakter") %>% 
  str_replace_all(pattern = "\n|\t|\r" , 
              replacement = "")
trimmed

我想获得重考和考试的考试成绩,但由于两个表的标题相同,因此 R 仅采用重考的值。 具体来说,我想在标题 Resultater

下的两个表中的等级 12、10、7、4、02、00、-3 旁边获得列 "Antal"

如有任何帮助,我们将不胜感激! :)

results <- html_nodes(pg, xpath=".//td[@style='width: 50%;' and 
                                       descendant::h3[contains(text(), 'Resultater')]]/table")

html_table(results[[1]])
##   Karakter Antal    Antal
## 1       12    11  (9,6 %)
## 2       10    48 (41,7 %)
## 3        7    41 (35,7 %)
## 4        4     4  (3,5 %)
## 5       02     1  (0,9 %)
## 6       00     1  (0,9 %)
## 7       -3     4  (3,5 %)
## 8  Ej mødt     5  (4,3 %)

html_table(results[[2]])
##   Karakter Antal    Antal
## 1       12     0  (0,0 %)
## 2       10     0  (0,0 %)
## 3        7     1  (9,1 %)
## 4        4     1  (9,1 %)
## 5       02     1  (9,1 %)
## 6       00     1  (9,1 %)
## 7       -3     0  (0,0 %)
## 8  Ej mødt     7 (63,6 %)