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문제는 반복당 하나의 파일만 얻을 것으로 예상한다는 것입니다 . 그렇지 않습니다. 루프는 호출 수만 계산하며 wget ... -r각 호출은 무제한의 파일을 다운로드할 수 있습니다.

-e robots=off많은 파일이 실제로 크롤러에 의해 차단된 경우 를 사용하면 재귀가 더 빨리 중지될 수 있다는 점을 제외하면 이는 관련이 없습니다.robots.txt

을 사용하면 안 됩니다 -e robots=off. 관할권에 따라 법적 결과가 발생할 수 있습니다(나쁜 일이고 스크래핑이 합법이어야 한다는 데 동의하지만 현재는 그렇습니다).

관련 정보