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

如何在R中自动下载每月更名的网站CSV文件?

动态CSV文件的R语言下载方案

针对你遇到的每月更新的CSV文件URL变化问题,可以通过抓取页面中的CSV链接来自动获取最新文件,不用手动找固定URL。以下是具体步骤和代码:

步骤说明

核心思路是先解析目标页面的HTML,提取所有指向CSV文件的链接,再筛选出你需要的999数据文件,最后读取内容。

1. 安装并加载所需包

需要用到rvest(网页解析)和readr(高效读取CSV),如果没安装先执行安装命令:

install.packages(c("rvest", "readr"))
library(rvest)
library(readr)

2. 抓取页面并提取CSV链接

先获取目标页面的HTML内容,再提取所有CSV格式的文件链接:

# 目标页面URL
page_url <- "https://www.police.uk/pu/your-area/police-scotland/performance/999-data-performance/"

# 读取页面HTML
page_html <- read_html(page_url)

# 提取所有a标签的链接,筛选出CSV文件链接
csv_links <- page_html %>%
  html_elements("a") %>%  # 获取所有超链接
  html_attr("href") %>%   # 提取链接地址
  na.omit() %>%           # 移除空值
  grep("\\.csv$", ., value = TRUE)  # 筛选以.csv结尾的链接

# 转换相对链接为绝对链接(部分链接可能是相对路径)
csv_links <- ifelse(startsWith(csv_links, "http"), csv_links, paste0("https://www.police.uk", csv_links))

3. 筛选目标999数据文件

页面里的CSV可能有多个,我们只需要包含"999-data"的文件,同时可以按文件名的日期排序,取最新的那个:

# 筛选包含999-data的链接
target_links <- grep("999-data", csv_links, value = TRUE)

# 按文件名的日期排序(假设文件名包含日期,比如sep-22这类格式),取最新的第一个
latest_csv <- target_links[order(target_links, decreasing = TRUE)][1]

4. 读取CSV文件

最后用read_csv读取最新的CSV文件:

dat <- read_csv(latest_csv)
View(dat)

注意事项

  • 如果页面的HTML结构发生变化(比如链接的class或位置变了),可能需要调整html_elements的选择器,比如查看页面源码后用更具体的选择器(如html_elements(".download-button"))。
  • 这段代码可以定期运行,自动获取最新的999数据文件,不用手动更新URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:50:36