2016-03-21 6 views
1

Я пытаюсь скопировать список больниц, их адреса и их номера телефонов от Catholic Health Initiatives.Веб-скребок с использованием 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 

и это результат Заголовок:

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

Я хотел бы, чтобы удалить скопированный адрес, указанный ниже основной линии:

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

ответ

0

Просто укажите .infoили.address в html_nodes, в зависимости от которого вы хотите:

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

Спасибо @alistaire! Есть ли способ разделить [1] «CHI St. VincentTwo St. Vincent Cr.Little Rock, AR 72205P 501.552.3000F 501.552.4241« запятыми? Например: [1] «CHI St. Vincent, Two St. Vincent Cr., Little Rock, AR 72205P 501.552.3000, F 501.552.4241»? Извините, я довольно новичок в R, и я стараюсь сделать побочный проект на работе. – Clayton

+1

Лучший способ сделать это - не удалять символы '\ n' (newline), которые сообщают вам, где должны быть разрывы строк, поэтому вы можете вызвать' strsplit (chi, '\ n +') ', чтобы разбить его на список с элементом для каждого адреса, каждый из которых разделен. Если это грязно ('trim = FALSE'),' strsplit' может на самом деле выполнить всю вашу очистку пробелов: 'strsplit (chi, '[\ n \ r \ t] +')' – alistaire

+0

Это все еще не разделяет телефоны, факсы , и конечная строка адресов с дополнительным. Для этого вам понадобится более серьезное регулярное выражение. – alistaire

Смежные вопросы