2017-02-15 57 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