$ 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
wget
with的默认行为-r
是将下载的文件存储在与 URL 匹配的目录中,因此您可以让它这样做:
wget -r -np -p -i myurls
(在哪里myurls
包含要下载的 URL 的文件在哪里)。
由此产生的大量目录可能不是最令您满意的,但它将确保您拥有显示下载文件所需的一切,并且没有任何内容被覆盖......