考虑一个包含许多下载数据链接的网页。
我想选择“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
的结果包含数千条明显孤立的HTML代码行,这些行代码在R控制台中不可见,即使数据已正确下载也是如此。
即如果我将显然空的控制台复制到文本编辑器,HTML代码是可见的。因此,我很难确定我需要的信息。
如何更好地可视化下载的数据?
答案 0 :(得分:3)
一种解决方案是利用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")