Automatizando o download de fotos de um determinado site
Dica publicada em Linux / Internet
Automatizando o download de fotos de um determinado site
Vamos supor que você esteja navegando por um site que contém 80 fotos turísticas da cidade onde você pretende passar suas próximas férias e para cada foto a ser visualizada, você precisa passar por um link diferente. Com certeza essa é uma tarefa que lhe consumirá muito tempo e como tempo é dinheiro... Seria muito mais fácil ter as 80 fotos armazenadas em disco e visualizá-las usando um software específico como o gPhoto ou GTKSee.
Para que o script abaixo funcione, as fotos devem ter algum sincronismo em seus nomes de arquivos (e.g.: friburgo01.jpg, friburgo02.jpg, friburgo03.jpg...). O site que contém as fotos tem a URL base www.fotosdefriburgo.com.br e todas as fotos encontram-se na URL www.fotosdefriburgo.com.br/fotos/.
Digite o script abaixo num editor de textos e salve o arquivo com o nome "pegafotos.tcl", por exemplo:
Para que o script abaixo funcione, as fotos devem ter algum sincronismo em seus nomes de arquivos (e.g.: friburgo01.jpg, friburgo02.jpg, friburgo03.jpg...). O site que contém as fotos tem a URL base www.fotosdefriburgo.com.br e todas as fotos encontram-se na URL www.fotosdefriburgo.com.br/fotos/.
Digite o script abaixo num editor de textos e salve o arquivo com o nome "pegafotos.tcl", por exemplo:
# pegafotos.tcl -------------------
puts "Qual é a URL?"
gets stdin URL
puts "Início"
gets stdin inicio
puts "Fim"
gets stdin fim
for {set x $inicio} {$x<=$fim} {incr x} {
if {[string length $x]==1} {
exec wget -c ${URL}0$x.jpg &
} else {
exec wget -c $URL$x.jpg &
}
}
# ------------------------------
puts "Qual é a URL?"
gets stdin URL
puts "Início"
gets stdin inicio
puts "Fim"
gets stdin fim
for {set x $inicio} {$x<=$fim} {incr x} {
if {[string length $x]==1} {
} else {
}
}
# ------------------------------
Lembre-se que, no meu caso, a primeira foto de Friburgo tem o nome friburgo01.jpg e a última, friburgo80.jpg. Vamos ao trabalho! Digite:
# tclsh pegafotos.tcl
Tclsh é o interpretador de comandos do TCL, que será invocado contendo o conteúdo do script pegafotos.tcl como parâmetro. O interpretador processará as linhas interativamente:
Qual é a URL?
www.fotosdefriburgo.com.br/fotos/friburgo
Início
01
Fim
80
O script irá montar uma estrutura de repetição que fará o download de todas as fotos do site:
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo01.jpg
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo02.jpg
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo03.jpg
...
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo80.jpg
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
# tclsh pegafotos.tcl
Tclsh é o interpretador de comandos do TCL, que será invocado contendo o conteúdo do script pegafotos.tcl como parâmetro. O interpretador processará as linhas interativamente:
Qual é a URL?
www.fotosdefriburgo.com.br/fotos/friburgo
Início
01
Fim
80
O script irá montar uma estrutura de repetição que fará o download de todas as fotos do site:
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo01.jpg
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo02.jpg
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo03.jpg
...
wget -c http://www.fotosdefriburgo.com.br/fotos/friburgo80.jpg
Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br
o wget tem a opção -r que permite fazer mirror.
Ex: wget -r -l1 -A *.jpg -U "Mozilla/4.0" www.urldosite.com
esse comando pega todas imagens *.jpg do site até um nível e ainda se faz passar por Mozilla.
Mas o ideal para esses casso seria usar o httrack que é um software especializado em mirror e poderiamos usar até espressão regular e resume...