2016-08-19 20 views
0

Ich hatte einige Hilfe von Benutzern von Stackoverflow bereits, versuchen, dieses Problem zu lösen. Allerdings lief ich in neue Schwierigkeiten:Webscraping HTML-Tabelle mit R

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 

Ich möchte für die Prüfungsergebnisse erhalten sowohl die Wiederholung und die Prüfung, aber da beide die Schlagzeilen für die beiden Tabellen gleich sind, R nimmt nur die Werte aus die Wiederholung. Um genau zu sein, würde ich gerne die Spalte "Antal" direkt neben den Noten, 12, 10, 7, 4, 02, 00, -3 in den beiden Tabellen unter der Überschrift Ergebnis

Hilfe bekommen würde viel geschätzt werden! :)

Antwort

0
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 %) 
Verwandte Themen