wgetが停止しない

wgetが停止しない

forループを使用してページをダウンロードしようとすると正常に動作しwget -rますが、使用しようとすると-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問題は、繰り返しごとに1つのファイルしか取得できないことです。そうではありません。ループは呼び出し数のみをカウントし、wget ... -r各呼び出しは無制限のファイルをダウンロードできます。

-e robots=off多くのファイルが実際にクローラによってブロックされている場合は、再帰がより速く停止される可能性があることを除いて、これは関係ありません。robots.txt

を使用しないでください-e robots=off。管轄権によっては法的結果が生じることがあります(悪いことであり、スクレイピングが合法でなければならないことに同意しますが、現在はそうです)。

おすすめ記事