2016-08-11 7 views
1

Ich habe versucht, & lesen ein wenig HTML, um eine Liste der Bedingungen für Tiere in einem Tierheim zu erhalten. Ich bin mir sicher, dass meine Unerfahrenheit beim HTML-Parsen nicht hilft, aber ich glaube, dass ich nirgendwohin komme.R Lesen & Analysieren von HTML zur Liste

Hier ist ein Ausschnitt aus dem HTML:

<select multiple="true" name="asilomarCondition" id="asilomarCondition"> 

    <option value="101"> 
     Behavior- Aggression, Confrontational-Toward People (mild) 
     - 
     TM</option> 
.... 
</select> 

Es gibt nur einen Tag mit <select...> und der Rest sind alle <option value=x>.

Ich habe die XML-Bibliothek verwendet. Ich kann die Zeilenumbrüche und Tabs entfernen, haben aber keinen Erfolg Entfernen der Tags hatte:

conditions.html <- paste(readLines("Data/evalconditions.txt"), collapse="\n") 
conditions.text <- gsub('[\t\n]',"",conditions.html) 

Als Endergebnis würde ich eine Liste aller von den Bedingungen, dass ich weiter für die spätere Verwendung verarbeiten kann als Faktor Name:

Behavior- Aggression, Confrontational-Toward People (mild)-TM 
Behavior- Aggression, Confrontational-Toward People (moderate/severe)-UU 
... 

ich bin nicht sicher, ob ich die XML-Bibliothek (oder eine andere Bibliothek) oder wenn gsub Muster ausreichend seien verwenden müssen (oder so, muß ich herausfinden, wie es zu benutzen) .

+0

Können Sie auf die vollständige URL mit diesem Auswahlfeld zeigen oder das Snippet etwas erweitern? – hrbrmstr

+3

Ich finde das rvest Paket einfacher zu bedienen. Wenn Sie einen Link zu der Website bereitstellen können, könnte jemand eine Lösung von Ihnen codieren. – Dave2e

+0

ist es HTML. es ist eine Auswahlliste in einer Form @alistaire – hrbrmstr

Antwort

1

Hier ist ein Start der rvest Paket mit:

library(rvest) 
#read the html page 
page<-read_html("test.html") 
#get the text from the "option" nodes and then trim the whitespace 
nodes<-trimws(html_text(html_nodes(page, "option"))) 

#nodes will need additional clean up to remove the excessive spaces 
#and newline characters 
nodes<-gsub("\n", "", nodes) 
nodes<-gsub(" ", "", nodes) 

Die Vektor Knoten sollte das Ergebnis sein, die Sie angefordert haben. Dieses Beispiel basiert auf dem oben angegebenen begrenzten Beispiel. Die tatsächliche Seite kann unerwartete Ergebnisse enthalten.

+0

Danke, @ Dave2e! Das hat perfekt funktioniert! Ich hatte ein paar zusätzliche Zeichen, um aufzuräumen, aber das war mit deinen Beispielen einfach zu machen. Auf den Rest der Datenreinigung! :O – kimbekaw