【发布时间】:2018-09-27 00:46:10
【问题描述】:
我正在尝试使用 R 获取所有指向 Eurostat 网站上数据文件的链接。虽然我的代码目前“有效”,但似乎每个链接都得到了重复的结果。
注意,download.file 的使用是为了绕过我公司的防火墙,根据this 的回答
library(dplyr)
library(rvest)
myurl <- "http://ec.europa.eu/eurostat/estat-navtree-portlet-prod/BulkDownloadListing?dir=data&sort=1&sort=2&start=all"
download.file(myurl, destfile = "eurofull.html")
content <- read_html("eurofull.html")
links <- content %>%
html_nodes("a") %>% #Note that I dont know the significance of "a", this was trial and error
html_attr("href") %>%
data.frame()
# filter to only get the ".tsv.gz" links
files <- filter(links, grepl("tsv.gz", .))
查看数据框的顶部
files$.[1:6]
[1] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&file=data%2Faact_ali01.tsv.gz
[2] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&downfile=data%2Faact_ali01.tsv.gz
[3] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&file=data%2Faact_ali02.tsv.gz
[4] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&downfile=data%2Faact_ali02.tsv.gz
[5] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&file=data%2Faact_eaa01.tsv.gz
[6] /eurostat/estat-navtree-portlet-prod/BulkDownloadListing?
sort=1&downfile=data%2Faact_eaa01.tsv.gz
1 和 2 之间的唯一区别是 1 表示“...file=data...”,而 2 表示“...downfile=data...”。这种模式继续适用于数据帧中的所有对。
如果我下载 1 和 2 并将文件读入 R,identical 检查确认它们是相同的。
为什么返回相同数据的两个链接?有没有办法(除了过滤“downfile”)只返回一个链接?
【问题讨论】:
-
这就是他们建立网站的方式。由于链接包含在表中,您可以尝试仅返回表的一列。 community.rstudio.com/t/…