2017-02-15 15 views
1

Ich habe ein data.frame mit zwei Variablen, von denen eine nur URLs enthält. Ich möchte diese URLs verwenden, um alle zu scrappen und relevante Textinformationen aus jedem von ihnen zu extrahieren und dadurch Variablen zum Datenrahmen hinzuzufügen, um die Textanalyse dort bereit zu haben.Webscraping von einer Variablen

FAO_CountryName  FAO_CountryURL 
Algeria    http://www.fao.org/giews/countrybrief/country.jsp?code=DZA 
Egypt    http://www.fao.org/giews/countrybrief/country.jsp?code=EGY 

Mit anderen Worten, würde Ich mag, einen Weg finden, diese URLs als richtige HTML-Seiten in einer Art und Weise zu betrachten, dass ich sie durch die read_html() Befehl kratzen konnte.

Die Idee wäre, so etwas wie dies der Prozess am Ende haben:

Wir definieren zunächst eine Funktion
FAO_CountryName  FAO_CountryURL            FAOText 
Algeria    http://www.fao.org/giews/countrybrief/country.jsp?code=DZA  Algeria is an interesting country 
Egypt    http://www.fao.org/giews/countrybrief/country.jsp?code=EGY  Egypt is interesting as well but in a different way 

Antwort

0

die Informationen, die wir von einem bestimmten URL wollen ernten:

library(rvest) 
scrapeFAO <- function(x) { 
    as.character(x) %>% 
     read_html() %>% 
     html_nodes('.Normal') %>% 
     .[1] %>% 
     html_text() 
} 

scrapeFAO("http://www.fao.org/giews/countrybrief/country.jsp?code=DZA") 
# [1] "Reference Date: 24-November-2016" 

Dies ist nur ein Beispiel, wir können tatsächlich jedes Element ernten, das wir auf dieser Seite brauchen. Pls lesen Sie mehr über rvest Paket, um die Möglichkeiten hier zu erweitern.

Dann wollen wir diese Funktion zu jeder Zeile und cbind das Ergebnis auf die anfänglichen dataframe anzuwenden:

final <- cbind(mydf, apply(mydf[2],1, scrapeFAO)) 

Beachten Sie, dass es möglicherweise effiziente Art und Weise, es zu tun.

hoffe, das hilft

+0

Pls betrachten zu akzeptieren und upvoting die Antwort, wenn Sie denken, es anderen Menschen – GGamba

+0

helfen kann: Ich bin auf dem Stapel, daher habe ich noch nicht genug bekam Ruf, offenbar. werde ich tun sobald ich> mehr bekomme. – Ileeo

+0

Hallo, vielen Dank für die Hilfe. Ok für das Skript, durch das es möglich ist, die verschiedenen URLs zu berücksichtigen. Wie auch immer, ich bekomme nicht die Art und Weise, wie die Formel auf jede Zeile angewendet werden sollte und - auf jeden Fall - scheint sie nicht mit meinem FAO_data Datenrahmen zu funktionieren. Könnten Sie bitte klären? Danke noch einmal. – Ileeo