2016-03-21 17 views
1

Hastanelerin listesini, adreslerini ve telefon numaralarını Catholic Health Initiatives'dan kopyalamaya çalışıyorum.Web Scraping'i kullanarak R

# 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 

ve bu başlık sonucudur:

kullanıyorum kodudur

[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" 

Ben ana çizginin altında bulunan yinelenen adresi kaldırmak istiyoruz:

[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" 

cevap

0

Sadece belirtin .infoveya yılında, bağlı olarak hangi istiyorum:

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

sen @alistaire ederiz! Ayrılmak için herhangi bir yolu var mı [1] "CHI St. VincentTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241" virgül tarafından mı? Gibi: [1] "CHI St. Vincent, İki Aziz Vincent Cr., Little Rock, AR 72205P 501.552.3000, F 501.552.4241"? Maalesef, R için oldukça yeni ve işte bir yan proje yapmaya çalışıyorum. – Clayton

+1

Bunu yapmanın en iyi yolu, satır sonlarının nerede olması gerektiğini söyleyen '\ n' (satırsonu) karakterleri kaldırmak değil, böylece 'strsplit (chi,' \ n + ')' olarak adlandırmak için Her bir adres için her biri bölünmüş bir öğe içeren liste. Eğer dağınıksa ('trim = FALSE'),' strsplit' aslında tüm boşluklarınızı temizleyebilir: 'strsplit (chi, '[\ n \ r \ t] +')' – alistaire

+0

Bu hala telefonları ve faksları bölmez ve son adresler ekstra bir olsa da. Bunun için biraz daha ciddi regex'e ihtiyacınız olacak. – alistaire