2016-01-21 76 views
1

考虑一个包含许多下载数据链接的网页。从HTML中选择下载链接

enter image description here

我想选择的链接“R”的数据格式。目标是将它们与页面的源代码隔离(在我登录后)。

conn = url("http://www.icpsr.umich.edu/icpsrweb/ICPSR/studies/35536? 
searchSource=find-analyze-home&sortBy=&q=GSS") 
html_code <- readLines(conn) 
close(conn) 
html_code 

html_code结果由不在R控制台可见的HTML代码显然隔离线的千,即使数据被正确地下载。 也就是说如果我将控制台显然空的板子复制到文本编辑器中,则HTML代码可见。正因为如此,我很难确定我需要的信息。

如何更好地可视化下载的数据?

+0

这可能是有用的:http://stackoverflow.com/questions/1844829/how-can-i-read-and-parse-the-contents-of-a-webpage-in-r –

回答

2

一种解决方案是利用所述rvest包:

# install.packages("rvest") 
library(rvest) 

page <- read_html("http://www.icpsr.umich.edu/icpsrweb/ICPSR/studies/35536?searchSource=find-analyze-home&sortBy=&q=GSS") 

# grab all of the links 
links <- page %>% 
    html_nodes("a") %>% 
    html_attr("href") 

# find the links that contain 'rdata' 
contains_rdata <- grep("rdata", links) 
links[contains_rdata] 
# [1] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=&bundle=rdata&path=ICPSR" 
# [2] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=1&bundle=rdata&path=ICPSR" 
# [3] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=2&bundle=rdata&path=ICPSR" 
# [4] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=3&bundle=rdata&path=ICPSR" 
# [5] "http://www.icpsr.umich.edu/cgi-bin/bob/terms2?study=35536&ds=4&bundle=rdata&path=ICPSR" 

正如@hrbrmstr指出的,一个更强大的和简化的解决方案是仅定位与R数据链路的锚标签:

page %>% 
    html_nodes("a[data-package = 'r']") %>% 
    html_attr("href") 

如果你不是链接的球迷,你可以使用:

html_attr(html_nodes(page, "a[data-package='r']"), "href")