2016-06-27 16 views
0

Ich versuche, die Informationen von der Karte auf dieser Webseite angebotenen http://fhi360odk.org/kdesktoplb_2/Screen Scraping Informationen aus einer Online-Karte

Die Webseite hat Infomationen/Lage für alle öffentlichen Schulen in Liberia webscrape. Grundsätzlich möchte ich den Schulstandort plus die Informationen, die angezeigt werden, wenn Sie auf eine bestimmte Schule klicken.

Ich habe schon mit R webscraping gemacht, aber aus dem Quellcode auf der Webseite kann ich nicht herausfinden, wo sich die Schule befindet.

Jede Hilfe würde sehr geschätzt werden.

+0

Vielen Dank für die Bearbeitungen @nrusell –

Antwort

1

Ich konnte es herausfinden. Das Problem ist, dass die tatsächlichen Schuldaten in einem Rahmen sind, der einen anderen Quellcode hat!

Unten ist mein Code

rm(list=ls()) 
#install.packages("RCurl") 
#install.packages("XML") 
require(RCurl) 
require(XML) 
require(stringr) 
require(foreign) 


sources <- c('http://fhi360odk.org/kdesktopLB_2/EarthMapping.php#') 
appUrl <- getURL(sources) 
Markers=gregexpr("addMarker",appUrl) 
Markers=Markers[[1]] 
Markers=Markers[-1] 
Markers=c(Markers,tail(Markers,1)+184) 


Escuelas=data.frame(Lat=NA,Long=NA,Code=NA,Date=NA,EMIS=NA,Name=NA,Status=NA,County=NA,District=NA,Address=NA,Mobile=NA,Ownership=NA, 
MaleStudents=NA,FemaleStudents=NA,TotalStudents=NA, 
PermanentClassrooms=NA,SemiPermanentClassrooms=NA,RoofOnlyClassrooms=NA,TentClassrooms=NA,OpenAirClassrooms=NA,OtherClassrooms=NA, 
MaleTeacher=NA,FemaleTeachers=NA,TotalTeachers=NA,stringsAsFactors =F) 


for(i in 1:(length(Markers)-1)){ 
#for(i in 1:10){ 
string=substr(appUrl,Markers[i],Markers[i+1]-2) 
matches=gregexpr ("\\d+\\.\\d+", string) 
Location=regmatches(string, matches) 
Lat=as.numeric(Location[[1]][1]) 
Long=as.numeric(Location[[1]][2]) 
matches=gregexpr ("cod=\\d+", string) 
Codigo=regmatches(string, matches) 
Codigo=as.numeric(gsub("cod=","",Codigo)) 
InfoColegio=getURL(paste0("http://fhi360odk.org/kdesktopLB_2/ident_gis.php?db=liberia_gis_v4&cod=",Codigo,"&nivel=null")) 
Tabla=readHTMLTable(InfoColegio,header=F) 
Tabla2=readHTMLTable(InfoColegio,header=T) 
Escuelas=rbind(Escuelas,as.character(c(Lat,Long,Codigo,as.character(Tabla[[1]][,2]),as.numeric(as.character(unlist(Tabla2[[2]]))),as.numeric(as.character(Tabla[[3]][,2])),as.numeric(as.character(unlist(Tabla2[[4]])))))) 

} 
Escuelas=Escuelas[-1,] 
save(Escuelas,file="C:/Users/Mauricio/Dropbox/Liberia/EMIS2015_RAW.Rdata") 

Escuelas$Lat=as.numeric(Escuelas$Lat) 
Escuelas$Long=as.numeric(Escuelas$Long) 
Escuelas$Code=as.numeric(Escuelas$Code) 
Escuelas$Date=as.Date(Escuelas$Date,format="%m %d %Y") 
Escuelas$EMIS=as.numeric(Escuelas$EMIS) 
Escuelas$MaleStudents=as.numeric(Escuelas$MaleStudents) 
Escuelas$FemaleStudents=as.numeric(Escuelas$FemaleStudents) 
Escuelas$TotalStudents=as.numeric(Escuelas$TotalStudents) 
Escuelas$PermanentClassrooms=as.numeric(Escuelas$PermanentClassrooms) 
Escuelas$SemiPermanentClassrooms=as.numeric(Escuelas$SemiPermanentClassrooms) 
Escuelas$RoofOnlyClassrooms=as.numeric(Escuelas$RoofOnlyClassrooms) 
Escuelas$TentClassrooms=as.numeric(Escuelas$TentClassrooms) 
Escuelas$OpenAirClassrooms=as.numeric(Escuelas$OpenAirClassrooms) 
Escuelas$OtherClassrooms=as.numeric(Escuelas$OtherClassrooms) 
Escuelas$MaleTeacher=as.numeric(Escuelas$MaleTeacher) 
Escuelas$FemaleTeachers=as.numeric(Escuelas$FemaleTeachers) 
Escuelas$TotalTeachers=as.numeric(Escuelas$TotalTeachers) 

Escuelas$Name[Escuelas$Name==""]=NA 
Escuelas$Status[Escuelas$Status==""]=NA 
Escuelas$County[Escuelas$County==""]=NA 
Escuelas$District[Escuelas$District==""]=NA 
Escuelas$Address[Escuelas$Address==""]=NA 
Escuelas$Mobile[Escuelas$Mobile==""]=NA 
Escuelas$Ownership[Escuelas$Ownership==""]=NA 



save(Escuelas,file="C:/Users/Mauricio/Dropbox/Liberia/EMIS2015.Rdata") 
write.dta(Escuelas,file="C:/Users/Mauricio/Dropbox/Liberia/EMIS2015.dta") 
Verwandte Themen