下载文件中的网页列表并重命名它们以避免覆盖?

下载文件中的网页列表并重命名它们以避免覆盖?
$ wget -r -np  -nH --cut-dirs=2 -p -k "http://www.example.com/1" -O test.html
Cannot specify both -k and -O if multiple URLs are given, or in combination
with -p or -r. See the manual for details.

Usage: wget [OPTION]... [URL]...

我想知道如何解决这个问题?

在我的实际问题中,我将列表网址存储在文本文件中,例如

http://www.example.com/1
http://www.example.com/2
http://www.example.com/3

我想下载每个网页以及必要的附属文件来替换该网页。

默认情况下,每个下载的文件都命名为index.html,因此会覆盖以前下载的网页。所以我试图用代表下载顺序的数字重命名下载的文件:

i=0
for url in $(cat ../htmls); 
do  
wget -r -np  -nH --cut-dirs=1 -p -k "$url" -O $(printf %04d $i).html; 
i=$((i+1))
done

这时候就出现了开头的错误。

答案1

您将需要这些index.html文件,因为网页中的各种链接将依赖于它们。我会将每个网页保存到其自己的目录中:

while read url; do
    mkdir "$url";
    cd "$url"
    wget -r -np  -nH --cut-dirs=1 -p -k "$url"
    cd ../
done

事实证明,wget默认情况下已经这样做了,所以使用斯蒂芬的方法反而。

答案2

wgetwith的默认行为-r是将下载的文件存储在与 URL 匹配的目录中,因此您可以让它这样做:

wget -r -np -p -i myurls

(在哪里myurls包含要下载的 URL 的文件在哪里)。

由此产生的大量目录可能不是最令您满意的,但它将确保您拥有显示下载文件所需的一切,并且没有任何内容被覆盖......

相关内容