我想阅读网页列表并检查其中一些是否已更新。使用 wget 还是curl 更好?我应该怎么做?
网页列表位于一个简单的文本文件中。如果网页内容相同,则不会打印任何内容。如果内容自上次运行脚本以来发生了变化,那么它将键入(stdout)网页地址。
答案1
#!/bin/sh
i=1
while IFS= read -r url; do
file="data-$i.out"
curl -o "$file.new" "$url"
if ! cmp -s "$file" "$file.new"
then
printf '%s\n' "$url"
fi
mv -f "$file.new" "$file"
i=$(( i + 1 ))
done <url-list.txt
url-list.txt
这将从 中逐行读取 URL ,并使用curl
来获取每个 URL,将输出保存在名为data-N.out.new
whereN
是一个整数(文件中的 URL 序号)的文件中。
如果没有旧data-N.out
文件,或者该文件与 不同data-N.out.new
,则将 URL 打印到标准输出。
然后,当您再次运行脚本时,将重命名获取的数据文件。
第一次运行脚本时,所有 URL 都将被输出,因为它们以前从未见过。
重新排序 URL 或在顶部添加新 URL 将使 URL 被标记为已更改,因为相应数据文件的内容已更改。您可以通过使用例如 base64 编码的 URL 作为输出文件名的一部分而不是$i
.
您是否使用curl
或wget
其他 Web 客户端本质上并不重要。