2016-03-21 8 views
1

Ich versuche, die Liste der Krankenhäuser, ihre Adressen und ihre Telefonnummern von Catholic Health Initiatives zu kopieren.Web Scraping mit R

Der Code Ich verwende ist:

# install.packages('rvest') 
library('rvest') 
htmlpage <- read_html("http://www.catholichealthinitiatives.org/landing.cfm?xyzpdqabc=0&id=39524&action=list") 
chihtml <- html_nodes(htmlpage,".info , .address") 
chi <- html_text(chihtml) 
chi 
library(stringr) 

chi <- str_replace_all(chi, "[\r\n\t]" , "") 
chi 

und das ist die Überschrift Ergebnis:

[1] "CHI St. VincentTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F   501.552.4241"         
[2] "Two St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241"             
[3] "CHI St. Vincent Hot Springs300 Werner StreetHot Springs National Park,  AR 71913P 501.622.1000"      
[4] "300 Werner StreetHot Springs National Park, AR 71913P 501.622.1000"             
[5] "CHI St. Vincent InfirmaryTwo St. Vincent CircleLittle Rock, AR 72205P 502.552.3000F 501.552.4241"      
[6] "Two St. Vincent CircleLittle Rock, AR 72205P 502.552.3000F 501.552.4241" 

Ich möchte die duplizierten Adresse unter der Hauptleitung gefunden entfernen:

[1] "CHI EX: St. VincentTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F   501.552.4241"         
## remove next line ## 
[2] "Two St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241" 

Antwort

0

Geben Sie einfach .infoodereinin html_nodes, je nachdem, was Sie wollen:

chihtml <- html_nodes(htmlpage,".info") 
chi <- html_text(chihtml, trim = TRUE) # `trim = TRUE` to strip whitespace 
head(chi) 
# [1] "CHI St. Vincent\nTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241"      
# [2] "CHI St. Vincent Hot Springs\n300 Werner StreetHot Springs National Park, AR 71913P 501.622.1000"    
# [3] "CHI St. Vincent Infirmary\nTwo St. Vincent CircleLittle Rock, AR 72205P 502.552.3000F 501.552.4241"   
# [4] "CHI St. Vincent Morrilton\nFour Hospital DriveMorrilton, AR 72110P 501.977.2300F 501.977.2400"    
# [5] "CHI St. Vincent North\n2215 Wildwood AvenueSherwood, AR 72120P 501.977.2300F 501.977.2400"     
# [6] "CHI St. Vincent Rehabilitation Hospital\n2201 Wildwood AvenueSherwood, AR 72120P 501.834.1800F 501.834.2227" 
+0

Vielen Dank @alistaire! Gibt es eine Möglichkeit, [1] "CHI St. VincentTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241" durch Kommas zu trennen? Wie zum Beispiel: [1] "CHI St. Vincent, zwei St. Vincent Cr., Little Rock, AR 72205P 501.552.3000, F 501.552.4241"? Tut mir leid, ich bin ziemlich neu in R und versuche ein Nebenprojekt bei der Arbeit zu machen. – Clayton

+1

Der beste Weg, dies zu tun, ist nicht die '\ n' (Newline) -Zeichen zu entfernen, die Ihnen sagen, wo Zeilenumbrüche sein sollten, also können Sie 'strsplit (chi, \ n + ')' aufrufen, um es in a aufzuteilen Liste mit einem Element für jede Adresse, von denen jede geteilt ist. Wenn es unordentlich ist ('trim = FALSE'), kann' strsplit' tatsächlich all Ihre Whitespace-Reinigung durchführen: 'strsplit (chi, '[\ n \ r \ t] +')' – alistaire

+0

Das teilt immer noch keine Telefone, Faxe , und die letzte Zeile von Adressen mit einem Extra, obwohl. Dafür brauchst du etwas ernsthafteres Regex. – alistaire