BAT调用wget和sed实时抓取PM2.5空气质量指数(AQI)
本文介绍一个通过批处理脚本(.bat)结合 wget.exe 和 sed.exe 工具,从远程网页实时获取并提取 PM2.5 空气质量指数(AQI)的实用方案。适用于需要在 Windows 环境下快速获取公开空气质量数据的运维或自动化场景。@echo off
setlocal enabledelayedexpansion
:: 定义数据源URL(示例,请替换为实际可访问的AQI数据页面)
set "URL=http://www.pm25.com/api/xxxx"
:: 使用wget下载页面到临时文件
wget.exe -q -O temp.html %URL%
:: 用sed提取AQI数值,假设页面中包含"<span class="aqi">123</span>"
sed -n "s/.*<span class=\"aqi\">\(\+\)<\/span>.*/\1/p" temp.html > aqi.txt
:: 读取结果并显示
set /p AQI=<aqi.txt
if defined AQI (
echo 当前AQI指数:%AQI%
) else (
echo 获取数据失败,请检查URL或正则表达式。
)
:: 清理临时文件
del temp.html aqi.txt 2>nul
脚本核心步骤说明:
1. 下载网页:wget.exe -q -O temp.html %URL% 以静默方式将目标网页保存为临时文件。
2. 截取数据:sed.exe 使用正则表达式提取特定标签内的数字。示例中假设网页包含类似 <span class="aqi">123</span> 的结构,实际使用时需根据目标网页的HTML结构调整匹配模式。
3. 结果输出:将提取的数值写入文件并读取显示,同时进行错误判断。
常见问题与调试:
- 确保 wget.exe 和 sed.exe 已放置在 PATH 路径下或脚本同目录。可从 GnuWin32 或 MSYS2 获取这些工具。
- 如果网页编码为 UTF-8, sed 可能需添加 -b 参数以二进制模式处理。
- 若AQI数据通过JavaScript动态加载,本方法不适用,建议改用其他接口(如JSON API)。
警告:运行批处理脚本前请确认来源可信,避免执行恶意代码。本脚本仅供学习参考,实际应用时需遵守目标网站的服务条款。
Re: BAT调用wget和sed实时抓取PM2.5空气质量指数(AQI)
很实用的脚本方案,把 wget 和 sed 组合起来的思路清晰,适合快速抓取静态网页数据。提几个可能需要注意的点:如果目标网站用了 gzip 压缩,wget 默认会自动解压,但保险起见可以考虑加 `--header="Accept-Encoding: gzip"` 确认;另外正则匹配 HTML 标签时如果遇到换行或属性顺序变化容易失效,建议改用更宽松的匹配方式,比如直接匹配数字区间。如果后续想扩展,也可以考虑把 URL 和提取规则做成变量让脚本更灵活。感谢分享~Re: BAT调用wget和sed实时抓取PM2.5空气质量指数(AQI)
这个脚本思路很清晰,把 wget 和 sed 组合起来做简单的网页数据抓取,很适合 Windows 下的批处理自动化场景。正则提取如果目标网页结构固定,效率确实高。不过有几个地方想提醒一下: 1. 如果目标网站有反爬机制或者需要 cookie,wget 默认不带 cookie,可能需要加 `--header` 或 `--load-cookies` 参数。 2. sed 在处理中文字符时可能会因为编码问题匹配失败,建议先用 `sed -n l` 看看原始文件的实际换行和编码情况。 3. 临时文件清理前可以加个延时或重试机制,避免网络不稳定时误删。 总的来说,这个脚本对快速验证和轻量监控很有用,感谢分享。Re: BAT调用wget和sed实时抓取PM2.5空气质量指数(AQI)
这个脚本很实用,尤其对需要快速抓取静态页面的运维场景来说,wget+sed的组合确实轻量高效。提两个小建议:1)如果目标网页编码不是ANSI,sed加`-b`参数能避免乱码;2)URL示例建议注明需要替换成实际可用接口,避免新手直接运行报错。另外如果数据是动态加载的,可以考虑用PowerShell的Invoke-WebRequest搭配正则或解析JSON。感谢分享~
页:
[1]