使用Tampermonkey自动定时下载网页CSV文件技术求助
绝对可行!手把手教你实现自动下载苏格兰小时降雨CSV数据
你的思路完全正确——Tampermonkey + Windows任务计划程序就是完美的解决方案,我来帮你搞定元素定位和脚本编写的核心问题:
一、先搞定Tampermonkey脚本(核心步骤)
你之前的问题出在元素定位不准确,动态渲染的页面不能硬写固定ID/路径,我们换更可靠的方式:
1. 新手友好的元素定位方法
打开目标网站,右键点击右上角的下载按钮→选择「检查」,打开Chrome开发者工具:
- 下载按钮的class是
export-main,这个是对的,但部分动态菜单需要先触发hover才能展开 - CSV选项是菜单里的一个
<span>标签,文本内容就是「CSV」,我们用文本匹配来定位,不怕网站改元素ID
2. 编写Tampermonkey脚本
安装好Tampermonkey后,点击扩展图标→「创建新脚本」,替换成下面的代码:
// ==UserScript== // @name SEPA 降雨数据自动下载 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 自动从SEPA网站下载指定站点的小时降雨CSV // @author You // @match http://apps.sepa.org.uk/rainfall* // @grant none // ==/UserScript== (function() { 'use strict'; // 等待页面完全加载(动态页面需要给点渲染时间) setTimeout(() => { // 1. 触发下载菜单(先模拟hover,确保菜单展开) const downloadBtn = document.querySelector('.export-main'); if (downloadBtn) { const hoverEvent = new MouseEvent('mouseover', { bubbles: true }); downloadBtn.dispatchEvent(hoverEvent); // 等待菜单展开(1秒足够,可按需调整) setTimeout(() => { // 2. 找到并点击CSV选项(用文本匹配,稳定性更高) const csvItems = Array.from(document.querySelectorAll('.export-submenu span')); const csvOption = csvItems.find(item => item.textContent.trim() === 'CSV'); if (csvOption) { // 点击父级a标签(span本身不能触发下载跳转) csvOption.parentElement.click(); console.log("✅ CSV下载已触发!"); // 可选:下载完成后自动关闭页面(方便任务计划自动清理) setTimeout(() => window.close(), 5000); // 等待5秒确保下载完成 } else { console.log("❌ 未找到CSV下载选项"); } }, 1000); } else { console.log("❌ 未找到下载按钮"); } }, 3000); // 等待3秒让页面完全加载,避免元素还没渲染出来 })();
3. 脚本测试
保存脚本后,刷新目标网站,确保你已经选中了要下载的站点,看看脚本是否自动触发下载。如果没反应,调整setTimeout的时间(比如把3000改成5000,给页面更多加载时间),或者重新检查元素选择器。
二、设置Windows任务计划程序(实现每小时自动运行)
现在让电脑每小时自动打开网站触发脚本:
- 打开「任务计划程序」→「创建基本任务」
- 触发器:选择「每天」,然后设置重复任务间隔为1小时,持续时间选「无限期」
- 操作:选择「启动程序」,程序或脚本选Chrome的安装路径(一般是
C:\Program Files\Google\Chrome\Application\chrome.exe),添加参数填:
(用--app=http://apps.sepa.org.uk/rainfall--app模式可以打开独立窗口,避免干扰其他标签页) - 完成:勾选「当单击完成时,打开此任务的属性对话框」,在属性里可以设置「如果任务运行超过10分钟就停止」,避免Chrome一直占用资源
三、关键注意事项
- Chrome下载设置:打开Chrome设置→「下载」,设置默认下载位置为你指定的文件夹,并且关闭「下载前询问每个文件的保存位置」,这样文件会自动保存到目标路径
- 站点保持选中:第一次手动打开网站选中目标站点后,Chrome会记住你的选择(只要不清除缓存),下次打开会自动加载该站点的数据
- 元素选择器更新:如果之后网站更新了页面结构,脚本失效,重新用开发者工具找新的元素选择器替换即可
内容的提问来源于stack exchange,提问作者icbp
相关产品推荐
相关产品推荐

