Bash 脚本从文本文件读取网页列表

Bash 脚本从文本文件读取网页列表

我想阅读网页列表并检查其中一些是否已更新。使用 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.newwhereN是一个整数(文件中的 URL 序号)的文件中。

如果没有旧data-N.out文件,或者该文件与 不同data-N.out.new,则将 URL 打印到标准输出。

然后,当您再次运行脚本时,将重命名获取的数据文件。

第一次运行脚本时,所有 URL 都将被输出,因为它们以前从未见过。

重新排序 URL 或在顶部添加新 URL 将使 URL 被标记为已更改,因为相应数据文件的内容已更改。您可以通过使用例如 base64 编码的 URL 作为输出文件名的一部分而不是$i.

您是否使用curlwget其他 Web 客户端本质上并不重要。

相关内容