Como automatizar o download de arquivos?

4

Eu tenho um livro que tinha um passe para acessar versões digitais de scans de alta resolução de grande parte da obra de arte no livro. Surpreendente! Infelizmente a apresentação de todos estes são 177 páginas de 8 imagens cada com links para arquivos zip de jpgs. É extremamente tedioso navegar, e eu adoraria conseguir todos os arquivos de uma só vez, em vez de sentar e clicar em cada um deles separadamente.

archive_bookname / index.1.htm - archive_bookname / index.177.htm cada uma dessas páginas tem 8 links cada para os arquivos

vinculando a arquivos como <snip>/downloads/_Q6Q9265.jpg.zip , <snip>/downloads/_Q6Q7069.jpg.zip , <snip>/downloads/_Q6Q5354.jpg.zip . que não entram bem em ordem. Não consigo obter uma listagem de diretórios da pasta pai /downloads/ .

Além disso, o arquivo está atrás de uma parede de login, portanto, fazer uma ferramenta que não seja de navegador pode ser difícil sem saber como recriar as informações da sessão.

Eu olhei em wget um pouco, mas estou muito confuso e não tenho idéia se isso vai me ajudar com isso. Algum conselho sobre como lidar com isso? Posso fazer isso automaticamente?

    
por Damon 30.04.2012 / 04:51

3 respostas

2

Você pode especificar um arquivo html de entrada com

wget -F -i <file>

para que você possa simplesmente despejar os arquivos html e fazer um loop através deles | (Adicionei um URL base para links relativos):

for i in <whereYouDumpedFiles>/*.html
do
  wget -F -B <base-url> -i $i
done

alternativamente

você poderia simplesmente despejar os links em um arquivo (separado por novas linhas) por qualquer método e fazer isso:

wget -i <url-file>

uma boa maneira de chegar a esses links seria:

lynx -hiddenlinks=ignore -nonumbers -listonly --dump <relevant-url> \
 | sort | uniq | sed /<regexp-pattern-of-urls-you-want>/\!d

possivelmente em um loop for que é anexado a 'url-file'

    
por 02.05.2012 / 00:10
2

Usar python pode ser mais fácil. Então esta é uma solução usando python. Se python não for uma opção para você, ignore. :)

Estou assumindo que o site é legal.

Escreva um script Python simples para percorrer archive_bookname/index.1-177.htm , desfaça-o usando BeautifulSoup , localize os links com seletores de classe css ou correspondência de regex simples e, em seguida, use urllib.urlretrieve() para obter os arquivos. É assim que eu faria.

    
por 30.04.2012 / 08:16
0

Ou você pode simplesmente usar o Perl e seu módulo brilhante chamado www :: mechanize. É muito simples colocar algo em conjunto e há muitos exemplos na documentação oficial do CPAN.

    
por 30.04.2012 / 11:05