Я пытаюсь использовать R для получения всех ссылок на файлы данных на веб-сайт Евростата. Хотя мой код в настоящее время «работает», мне кажется, что для каждой ссылки я получаю одинаковый результат.
Обратите внимание, что download.file
используется для обхода брандмауэра моей компании согласно этот ответ
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
проверка подтверждает, что они одинаковы.
Почему возвращаются две ссылки на одни и те же данные? Есть ли способ (кроме фильтрации по «нижнему файлу») вернуть только одну из ссылок?