如何使用 wget spider 从 url 列表中识别损坏的 url 并保存损坏的

how to use wget spider to identify broken urls from a list of urls and save broken ones

我正在尝试编写一个 shell 脚本来从 URL 列表中识别损坏的 URL。

这里是 input_url.csv 示例:

https://www.google.com/
https://www.nbc.com
https://www.google.com.hksjkhkh/
https://www.google.co.jp/
https://www.google.ca/

这是我的作品:

    wget --spider -nd -nv -H --max-redirect 0 -o run.log -i input_url.csv

这给了我 '2019-09-03 19:48:37 URL: https://www.nbc.com 200 OK' 对于有效的 url,对于损坏的 url,它给了我 '0 重定向超出。 '

我期望的是我只想将那些损坏的链接保存到我的输出文件中。

样本预期输出:

https://www.google.com.hksjkhkh/

我想我会选择:

<input.csv xargs -n1 -P10 sh -c 'wget --spider --quiet "" || echo ""' --

您可以使用 -P <count> 选项来 xargs 到 运行 count 并行处理。

xargs 运行 输入文件的每一行的命令 sh -c '....' -- 将输入文件行作为参数附加到脚本。

然后 sh 在 运行 内 wget ... ""|| 检查 return 状态是否为非零,这意味着失败。在 wget 失败时,执行 echo ""

Live code link at repl.

您可以过滤 wget -nd -nv 的输出,然后对输出进行正则表达式,就像

wget --spider -nd -nv -H --max-redirect 0 -i input 2>&1 | grep -v '200 OK' | grep 'unable' | sed 's/.* .//; s/.$//'

但这看起来不是消耗性的,不是并行的,所以可能更慢并且可能不值得麻烦。