如何编写程序自动定时下载指定高频更新网站的HTML文件?
实现定时自动下载网页HTML文件的几种方法
方法一:Python脚本(灵活易扩展)
用Python可以快速实现带定时功能的网页下载,还能轻松处理反爬、登录态等复杂场景。
先安装依赖:pip install requests
然后写脚本:
import requests import time from datetime import datetime # 替换成你要监控的网站地址 TARGET_URL = "https://example.com" # 定时间隔,单位秒(5分钟就是300秒) INTERVAL = 300 # 模拟浏览器请求头,避免被网站拦截 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } def save_html(): try: # 发送请求获取网页内容 response = requests.get(TARGET_URL, headers=HEADERS) response.raise_for_status() # 请求失败时抛出异常 # 用当前时间做文件名,避免覆盖旧文件 timestamp = datetime.now().strftime("%Y%m%d_%H%M%S") filename = f"page_backup_{timestamp}.html" # 写入本地文件 with open(filename, "w", encoding="utf-8") as f: f.write(response.text) print(f"已保存: {filename}") except Exception as e: print(f"下载出错: {str(e)}") if __name__ == "__main__": print(f"开始每隔{INTERVAL//60}分钟下载一次网页...") while True: save_html() time.sleep(INTERVAL)
方法二:Shell脚本 + Cron(Linux/macOS轻量方案)
如果是Linux或macOS用户,用系统自带的工具就能搞定,不用额外装软件。
- 写一个下载脚本
page_downloader.sh:
#!/bin/bash # 目标网站地址 TARGET_URL="https://example.com" # 文件保存目录,自动创建不存在的目录 SAVE_DIR="./page_backups" mkdir -p "$SAVE_DIR" # 生成带时间戳的文件名 TIMESTAMP=$(date +%Y%m%d_%H%M%S) FILENAME="$SAVE_DIR/page_$TIMESTAMP.html" # 用curl请求网页,模拟浏览器 curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" "$TARGET_URL" -o "$FILENAME" # 检查是否保存成功 if [ -f "$FILENAME" ]; then echo "已备份: $FILENAME" else echo "备份失败" fi
给脚本加执行权限:
chmod +x page_downloader.sh设置定时任务:
输入crontab -e,添加一行(比如每5分钟执行一次):
*/5 * * * * /full/path/to/page_downloader.sh
保存退出后,Cron会自动后台运行定时任务。
方法三:PowerShell脚本 + 任务计划程序(Windows专属)
Windows用户可以用PowerShell写脚本,配合系统的任务计划程序实现定时。
写脚本PageBackup.ps1:
$targetUrl = "https://example.com" $saveDir = ".\page_backups" # 创建保存目录 if (-not (Test-Path $saveDir)) { New-Item -ItemType Directory -Path $saveDir | Out-Null } # 生成带时间戳的文件名 $timestamp = Get-Date -Format "yyyyMMdd_HHmmss" $filename = Join-Path $saveDir "page_$timestamp.html" # 模拟浏览器请求头 $headers = @{ "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } try { Invoke-WebRequest -Uri $targetUrl -Headers $headers -OutFile $filename Write-Host "已保存: $filename" } catch { Write-Host "下载失败: $_" }
然后打开「任务计划程序」:
- 创建基本任务,设置触发器为「每隔X分钟执行」
- 操作选择「启动程序」,程序选
powershell.exe,参数填-ExecutionPolicy Bypass -File "C:\full\path\to\PageBackup.ps1" - 保存任务即可自动运行
注意事项
- 部分网站有反爬机制,频繁请求可能被封IP,可适当延长间隔或添加代理
- 如果需要登录后才能访问的页面,要在请求中带上登录后的Cookie(Python用
requests.get的cookies参数,curl用-b参数) - 定期清理旧的备份文件,避免占用过多磁盘空间
内容的提问来源于stack exchange,提问作者matias villegas
相关产品推荐
相关产品推荐

