有一个纯文本 (html) 网页,偶尔会更新文本信息。如果此特定网页内容发生更改,是否有任何方法可以收到通知(无论通过何种方式),而网站不提供任何订阅机制?
答案1
Linux(和 WSL)
即使在 Windows Subsystem for Linux (WSL) 中,您也应该能够使用以下内容
在 Linux 下,您可以使用先前下载页面的目录中的选项(时间戳)wget
。-N
wget -N https://example.com/your_page.html
它将仅下载文件的新版本,并向服务器询问时间戳。wget
无论下载成功与否,都会给出不同的输出。
文件已下载
HTTP 请求已发送,正在等待响应...200 OK
由于时间戳相同,未下载
HTTP 请求已发送,正在等待响应...304 未修改
因此最后你可以构建命令行或类似这样的脚本
wget -N https://example.com/your_page.html 2>&1 \
| grep "304 Not Modified" >/dev/null \
&& echo "Not downloaded, old one" \
|| echo "There is a new file"
笔记:
-N
激活时间戳用法2>&1
将标准错误重定向到标准输出,用于以下操作grep
| grep "304 Not Modified"
将上一个命令 (wget
) 的输出作为grep
选择带有“304 Not Modified”的行的输入。0
如果找到匹配项,它将以状态 (true) 退出。&&
逻辑和(又名then
)如果前一个退出状态为 0,则执行以下命令。您可以省略此部分。||
逻辑或(又名else
)如果退出状态不是 0,则执行以下命令。- 在 shell 中, each
\
用于转到新行,并且必须是该行的最后一个字符 - 用你的命令改变
echo this or that
...
结束语
您wget -O - | md5sum
可以创建一个校验和以便下次重复使用,而无需保留本地副本......