wget 没有停止

wget 没有停止

当我尝试wget -r使用 for 循环下载页面时,它工作正常,但是当我尝试使用它时,-e robots=off它不会停止到我为“for”循环设置的限制,这是我的代码

#!/bin/bash

lynx --dump  https://en.wikipedia.org/wiki/Cloud_computing |awk '/http/{print $2}'| grep https://en. | grep -v '.svg\|.png\|.jpg\|.pdf\|.JPG\|.php' >Pages.txt

grep -vwE "(http://www.enterprisecioforum.com/en/blogs/gabriellowy/value-data-platform-service-dpaas)" Pages.txt > newpage.txt

rm Pages.txt
egrep -v "#|$^" newpage.txt>try.txt
awk '!a[$0]++' try.txt>new.txt
rm newpage.txt
rm try.txt
mkdir -p htmlpagesnew
cd htmlpagesnew
j=0
for i in $( cat ../new.txt );
do
if [ $j -lt 10 ];
then
    let j=j+1;
    echo $j
    wget  -N -nd -r -e robots=off --wait=.25 $i  ;
fi
done
find * -name "*" -exec md5sum '{}' + | perl -ane '$k{$F[0]}++; system("rm \"@F[1 
.. $#F]\"") if $k{$F[0]}>1'

find * -name '*.[[:digit:]]' -exec rm {} +

rm *[0-9]

find -type f |sed 's,\(.*\)/\(.*\)$,\1/\2\t\1/\L\2,'|sort|uniq -D -f 1|cut -f 
1|xargs rm

ls |wc -l

echo "done"

答案1

您的for循环很好(除了可以使用breakwhen更有效地编写它$j -ge 10,这样它就不会继续迭代剩余的元素。

问题是您期望wget ... -r每次迭代仅获取一个文件。事情不是这样的;该循环仅计算 的调用次数wget ... -r,并且每次调用都可以下载无限数量的文件。

这是不相关的,只是如果许多文件实际上被爬虫阻止,则-e robots=off使用可能会导致更快地停止递归。robots.txt

你真的不应该使用-e robots=off.根据您的管辖范围,这样做可能会产生法律后果(我同意这很糟糕,抓取应该是合法的,但这就是目前的情况)。

相关内容