2017-10-18 51 views
0

我正在学习如何使用R进行网页抓取。在这种情况下,我使用包“rvest”和一个名为follow_link的特定函数。如何通过R中的follow_link抓取这个链接?

的想法是让拥有多个链接网页的信息。我希望我的代码能够进入这些链接并获取其中的表格。

这是代码:

library(rvest) 
s <- html_session("http://fccee.uvigo.es/es/profesorado.html") 
link <- c("Dereito Privado", "Economia Financieira e Contabilidade", "Matemáticas", 
     "Estadística e Investigación Operativa", "Economía Aplicada", "Fundamentos da Análise Ec. e Hª e Institucións Económicas", 
     "Informática", "Organización de Empresas e Marketing", "Socioloxía, Ciencia Política e da Administración e Filosofía") 
n <- length(link) #number of pages 
datos <- list() 
for (i in 1:n){ 

    s <- s %>% follow_link(link[i]) 
    datos[[(i)]] <- s %>% html_nodes(".lista_fccee") %>% html_table() 
    s <- s %>% back()} 

的问题是,我得到这个错误:没有链接有文字 'Matemáticas'。 我相信问题与文字重音标记有关,因为前两个链接没有问题。

这可能是一个非常基本的问题,但我没有找到关于此特定错误任何信息。

预先感谢您!

+0

请不要刮这些页面来构建与该机构无关的电子邮件垃圾邮件列表或电子邮件目录。当我看到的所有重要信息是姓名和电子邮件地址时,我都非常怀疑意图。 – hrbrmstr

+0

这不是我的意图。我在那所大学学习,这就是为什么我选择以网页为例。 –

回答

2

的问题是,当你怀疑,用特殊字符(重音一)。你可以看到[R如何使用此代码视图链接名称:

library(rvest) 
top_url = "http://fccee.uvigo.es/es/profesorado.html" 
page = read_html(top_url) 
links = page %>% html_nodes("a") %>% html_text() 
links 
#> ... 
#> [44] "Matemáticas" 
#> ... 

这最终是一个复杂的编码问题,我无法弄清楚如何处理。相反,这是获取数据的另一种方式。

library(rvest) 
top_url = "http://fccee.uvigo.es/es/profesorado.html" 
page = read_html(top_url) 
links = page %>% 
    html_nodes(".listado_fccee li a") %>% 
    html_attr("href") 
datos <- list() 
for(i in links){ 
    datos[[length(datos)+1]] <- i %>% 
    paste0("http://fccee.uvigo.es",.) %>% 
    read_html() %>% 
    html_nodes(".lista_fccee") %>% 
    html_table() 
} 

而不是使用一个会话,你在第一页阅读,提取其中具有部门联系股利类listado_fccee所有链接。然后,您可以阅读每个链接并像往常一样获取表格,将它们添加到列表中。