[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [DEBIAN] script para baixar dados



Em Quarta-feira 13 Outubro 2010, às 22:27:18, roberval.sena@gmail.com escreveu:
> galera,
> 
> 
> eu to me batendo para criar um script que baixe 'uma tonelada' de
> arquivos PDF de um site, mas to apanhando horrores...
> 
> acontece que pelo site já abaixa automaticamente, quando se acessa a
> página...  eu não consigo "chegar lá"
> 
> exemplo:
> estrando no navegador, se acesso a página:
> http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=20&pagina=1&data=1
> 3/10/2010 ele automaticamente já baixa o arquivo.. da página 1
> 
> é preciso fazer isso várias vezes, (as vezes mais de 2000), mudando a
> página para ter o arquivo completo...
> 
> ai no bash fiz vários testes...  mas nenhum deles abre a página
> 'seguinte', que é o download 'automático'..
> 
> 
> se alguém tiver uma dica de como fazer os downloads de uma 'tacada' só,
> agradeço!!
> DETALHE: ele sempre baixa o arquivo com o mesmo nome... teria que
> renomear na hora de gravar...
> 
> 
> []s Sena


Veja se te ajuda... 

=====
#!/bin/bash 
if [  $#  !=  2 ]  
  then echo -e "\n\nUso: $0 dd/mm/aaaa NumeroJornal\n\n"
  exit 0
fi
DATA="$1"
JORNAL="$2"
TEMPO_MENOR="2"
TEMPO_MAIOR="8"
DATA_DIR=`echo "$DATA" | sed 's/\//_/g'`
ANO=`echo $DATA_DIR|cut -d_ -f3`
MES=`echo $DATA_DIR|cut -d_ -f2`
DIA=`echo $DATA_DIR|cut -d_ -f1`
DATA_DIR="$ANO"_"$MES"_"$DIA" 
mkdir -p "$DATA_DIR/$JORNAL" 
touch "$$cookie$$"
trap "rm -f $$cookie$$; exit" INT TERM EXIT
USER="Mozilla/5.0 (X11; U; Linux i686; pt-BR; rv:1.9.1.9) Gecko/20100501 Iceweasel/3.5.9 (like Firefox/3.5.9)"
OPTS="--save-cookies=$$cookie$$ --load-cookies=$$cookie$$ --keep-session-cookies -c -q"
URLS=`wget $OPTS -U="$USER" "http://www.in.gov.br/visualiza/index.jsp?data=$DATA&jornal=$JORNAL&pagina=1"; -o /dev/null -O - | grep src `
CONTROLADOR=`echo "$URLS" | grep -i controlador| cut -d\" -f4`
ARQUIVOS=`echo "$CONTROLADOR"|sed 's/\&/\n/g' | grep totalArquivos|cut -d= -f2`
if [ -z "$ARQUIVOS" ] 
  then 
    echo "Link inválido ou jornal inexistente ou data sem publicação. revise os links ou suas opções " 
    exit 1
fi
PAGINA=0
for PAGINA in `seq 1 $ARQUIVOS`
do
segundos=0
while [ "$segundos" -le $TEMPO_MENOR ]
 do
   segundos=$RANDOM
   let "segundos %=$TEMPO_MAIOR"  
 done
URLS=`wget $OPTS -U="USER" "http://www.in.gov.br/visualiza/index.jsp?data=$DATA&jornal=$JORNAL&pagina=$PAGINA"; -o /dev/null -O - | grep src`
CONTROLADOR=`echo "$URLS" | grep -i controlador| cut -d\" -f4`
VISUALIZADOR=`echo "$URLS" | grep -i visualizador| cut -d\" -f4`
ARQUIVOS=`echo "$CONTROLADOR"|sed 's/\&/\n/g' | grep totalArquivos|cut -d= -f2`
if [ -z "$ARQUIVOS" ]
   then
    echo "Link inválido ou jornal inexistente ou data sem publicação. revise os links ou suas opções " 
     exit 1 
fi
REFERER="http://www.in.gov.br/visualiza/navegaJornalSumario.jsp?jornal=$JORNAL&pagina=$PAGINA&data=$DATA&totalArquivos=$ARQUIVOS";
wget $OPTS -U="USER" --referer="$REFERER" "$VISUALIZADOR" -O $DATA_DIR/$JORNAL/$PAGINA.pdf  
echo "$DATA_DIR/$JORNAL/$PAGINA.pdf pronto, aguardando $segundos segundos para a próxima página"
sleep $segundos
done 
=====

[ ]'s, e divirta-se
Henry


Reply to: