2017-02-15 91 views
1

我有一個data.frame有兩個變量,其中一個只包含URL。 我想要使用這些URL來抓取所有這些URL,並從每個人和每個人中提取相關的文本信息,並且 - 通過這樣做 - 向數據框中添加變量以便在那裏進行文本分析。從一個變量的網頁搜索

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 

換句話說,我想找到一種方法來考慮這些網址的方式適當的HTML頁面,我可以湊他們通過read_html()命令。

的想法是有這樣的事情在過程結束:

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 

回答

0

我們首先定義一個函數從 特定URL收穫我們想要的信息:

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" 

這只是一個例子,我們實際上可以在該頁面上收集我們需要的任何元素。請閱讀有關rvest包的更多信息,以擴展此處的可能性。

然後我們想這個功能適用於每一行和cbind結果爲初始dataframe

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

注意,有可能是更有效的方式來做到這一點。

希望這有助於

+0

請考慮接受和upvoting答案,如果你認爲它可以幫助其他人 – GGamba

+0

我在堆棧新,所以我沒有足夠的聲譽還沒有,顯然。 我會盡快>我得到更多。 – Ileeo

+0

嗨,非常感謝您的幫助。 好的,通過它可以考慮各種URL的腳本。無論如何,我不知道公式應該適用於每一行,無論如何 - 它似乎不適用於我的FAO_data數據框。 請您澄清一下嗎?再次感謝。 – Ileeo