You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R爬取Eurostat网站数据文件链接时出现重复结果的问题

嘿,我来帮你搞定这个重复链接的问题!

你提到用download.file绕过防火墙的思路没问题,但出现重复链接大概率是因为Eurostat的批量下载页面里,同一个数据文件的链接在DOM结构中出现了多次,或者你提取链接时没做去重处理。我给你调整下代码,同时解释下解决思路:

首先补全并优化你的代码,核心是精准定位数据链接+去重:

library(dplyr)
library(rvest)
library(stringr)

# 下载页面(绕过防火墙)
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")

# 提取数据文件链接并去重
data_links <- content %>%
  # 精准定位表格中数据文件的链接(Eurostat页面里数据链接在class为file的td标签内)
  html_elements("td.file a") %>%
  html_attr("href") %>%
  # 筛选出常见的数据文件后缀(可根据需求调整)
  str_subset("\\.(gz|csv|tsv)$") %>%
  # 去重核心步骤
  unique()

# 查看去重后的结果
head(data_links)

关键说明:

  • 精准定位元素:用html_elements("td.file a")直接抓取表格里的数据文件链接,避免提取页面导航、返回按钮这类无关链接,从源头上减少重复的可能。
  • 强制去重:即使页面里有重复的DOM节点,unique()函数会帮你把重复的链接只保留一份。
  • 筛选文件类型:用str_subset过滤出你需要的文件格式(比如.gz压缩包、csv表格),避免拿到无关的页面链接。

如果你想排查重复的具体原因,可以先跑这段代码看看重复的链接:

# 检查哪些链接重复了
link_counts <- table(data_links)
link_counts[link_counts > 1]

这样能直观看到哪些链接重复,以及重复次数,方便你确认是页面结构的问题,还是提取逻辑的小疏漏。

内容的提问来源于stack exchange,提问作者Conor Neilson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:12:39