wget não parando

1

Quando tento baixar páginas com wget -r usando um loop for ele funciona bem, mas quando eu tento com -e robots=off ele não para aquele limite que eu configurei para o loop "for", aqui está o meu código

#!/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,\(.*\)/\(.*\)$,/\t/\L,'|sort|uniq -D -f 1|cut -f 
1|xargs rm

ls |wc -l

echo "done"
    
por Explorer 28.11.2016 / 02:53

1 resposta

1

O seu for loop está bem (exceto que ele poderia ser escrito de forma mais eficiente usando break quando $j -ge 10 , para que ele não continue iterando pelos elementos restantes.

O problema é que você espera que wget ... -r obtenha apenas um arquivo por iteração. Não é assim que funciona; o loop está contando apenas o número de invocações de wget ... -r e cada uma dessas invocações pode fazer o download de um número ilimitado de arquivos.

O -e robots=off não está relacionado, exceto pelo fato de que usar robots.txt pode impedir a recursão muito mais cedo se muitos dos arquivos forem realmente bloqueados para rastreadores.

Você não deveria usar -e robots=off . Dependendo da sua jurisdição, pode haver consequências legais ao fazê-lo (eu concordo que isso é péssimo, a raspagem deve ser legal, mas essa é a situação atual).

    
por 28.11.2016 / 03:28