Wget como utilitário para baixar todas as imagens no diretório mysite.com/img/

4

Meu acesso ao diretório mysite.com/img/ está bloqueado.

No entanto, todas as imagens nesse diretório estão no formato n.jpg , em que n é a enésima imagem.

Meu acesso a mysite.com/img/n.jpg não está bloqueado

Existe alguma maneira que eu salve as imagens 1-500 ( mysite.com/img/1.jpg to mysite.com/img/500.jpg )?

Estou usando o Ubuntu 11.10

    
por user784637 25.03.2012 / 07:59

2 respostas

6

A solução mais fácil é provavelmente usar expansões de chaves bash

wget http://mysite.com/img/{1..500}.jpg

Existe também a opção de fazer um loop, permitindo que você espere um pouco entre cada requisição.

for n in $(seq 1 500); do
  wget http://mysite.com/img/${n}.jpg
  sleep 0.1
done

(O acima pode ser executado diretamente no shell.)

    
por andol 25.03.2012 / 10:38
1

Há também outra maneira de fazer isso com wget que usei com êxito para um site, e você deve poder modificar as instruções abaixo para outros sites. Isso envolve gerar uma lista de URLs e, em seguida, alimentar essa lista para wget .

1) Como exemplo, digamos que você queira fazer o download de todas as 63 revistas em formato pdf da Revista Full Circle (uma revista Ubuntu), mas seu download gerente não pode baixá-los todos de uma vez. Portanto, encontre o link do primeiro arquivo pdf e verifique rapidamente se os outros links da revista estão no mesmo formato de URL.

2) Com o conhecimento adquirido na parte 1, podemos agora nos voltar para o nosso script para gerar as urls. O script abaixo executa um loop até, que eu modifiquei (credito para seu criador). Você modifica esse script colocando o número de revistas na parte until [ $i = 63 ] , coloca o URL correto após echo e certifica-se de que "$i" esteja na parte correta da URL a ser ecoada, de forma que ela mude a cada execução do loop. Os urls são gerados e depois anexados a um arquivo de texto - isso acontece em uma fração de segundo quando o script é executado e não é tão complicado de configurar quanto parece!

Salve o script em um editor de texto, torne-o executável e execute-o; modificá-lo como descrito acima quando você quiser fazer o download de um site diferente do que o meu exemplo.

#!/bin/bash
   i=0
   until [ $i = 63 ] ; do
    i=$(($i+1))
    echo "http://dl.fullcirclemagazine.org/issue"$i"_en.pdf" >> url.txt
done 

3) Finalmente, assumindo que url.txt esteja no diretório de trabalho atual, execute:

wget -i url.txt  

Se você deseja salvar os downloads em outro lugar, adicione -P ~/MyDirectory após url.txt

Ele funciona - se você tentar, digite ctrl c para abortar se não quiser baixar todos eles!

    
por user76204 16.08.2012 / 21:48