Como baixar todas as imagens de um site (não da página da web) usando o terminal?

2

Eu quero um comando que eu digite um URL, por exemplo photos.tumblr.com, e faça o download de todas as fotos deste site em uma pasta, mas não apenas imagens da página inicial do site. Este comando precisa baixar as imagens de todas as partes do site, como photos.tumblr.com/ph1/1.png / photos.tumblr.com/ph3/4.jpg.

Por favor, mostre-me um exemplo usando este url: link e teste-o antes de responder à pergunta

    
por Zignd 08.06.2012 / 15:36

4 respostas

4

Você pode usar:

wget -r -A=.jpg,.png http://website.com

Com este comando, você obterá todos os arquivos JPG e PNG, mas poderá ser banido do site.

Então, se você usar:

wget --random-wait --limit-rate=100k -r -A=.jpg,.png http://website.com

Você terá suas imagens aguardando um tempo aleatório entre os downloads e definindo um limite de velocidade.

    
por 08.06.2012 / 15:48
1

Você dificilmente poderia obter bons resultados usando a abordagem de força bruta que a maioria dos comandos one-liner daria (embora eu use a opção wget para obter todo o site).

Eu sugiro que você crie um script que use alguma forma de seleção condicional e faça um loop para realmente corresponder e seguir o tipo de links que levam às imagens que você deseja.

A estratégia que costumo seguir:

  • No navegador, vá para a primeira página de interesse e mostre o código-fonte;
  • Clique com o botão direito em uma imagem - > "Propriedades da imagem" - > localize os atributos 'src =' e as tags de imagem.
  • Obtenha o padrão geral dessas tags / links / hrefs e use um pouco de regex ( grep -o ) para analisar os links;
  • Use esses links com algum comando para baixar as imagens;
  • Obtenha também os links na página que levam para outras páginas;
  • Repetir.

Isso é realmente muito mais complicado do que um one-liner que leva tudo, mas a experiência é esclarecedora. O webscraping é uma arte em si mesmo.

Para isso, também, eu recomendaria o Python, embora seja perfeitamente possível fazê-lo com Shell Script (bash) se você preferir, ou qualquer outra linguagem de script (Ruby, PHP, perl, etc.). / p>

Espero que isso ajude.

    
por 08.06.2012 / 16:28
0

Você pode baixar o site inteiro (eu usaria wget -r -p -l inf -np ), então (ou simultaneamente) executaria um script de shell para excluir todos os arquivos que não são de imagem (o comando file pode ser usado para verificar se um arquivo é uma imagem).

(As opções -A/-R do wget não são confiáveis; elas apenas verificam a extensão do URL (assim você pode filtrar por .jpg, .jpeg, .png, etc.), mas não há necessidade de estar presente.)

    
por 08.06.2012 / 15:46
0

Você pode usar um repositório do Git como este:

link

Existem também outros repositórios que fornecem funcionalidades semelhantes.

    
por 12.06.2016 / 14:05