Como automatizar o download de arquivos?

Como automatizar o download de arquivos?

Ganhei um livro que tinha um passe para acessar versões digitais de digitalizações em alta resolução de grande parte das obras de arte do livro. Incrível! Infelizmente a apresentação de tudo isso são 177 páginas de 8 imagens cada uma com links para arquivos zip de jpgs. É extremamente tedioso navegar e eu adoraria poder obter todos os arquivos de uma vez, em vez de ficar sentado clicando 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. isso não está bem em ordem. Não consigo obter uma listagem de diretório da /downloads/pasta pai.

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

Eu pesquisei um pouco sobre o wget, mas estou muito confuso e não tenho ideia se isso vai me ajudar com isso. Algum conselho sobre como lidar com isso? O wget pode fazer isso por mim automaticamente?

Responder1

Você pode especificar um arquivo HTML de entrada com

wget -F -i <file>

então você pode simplesmente despejar os arquivos html e percorrê-los
(adicionei um URL base para links relativos):

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

alternativamente

você pode simplesmente despejar os links para um arquivo (separados por novas linhas) por qualquer método e fazer o seguinte:

wget -i <url-file>

uma boa maneira de acessar 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 anexado ao 'arquivo url'

Responder2

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. :)

Presumo que raspar o site seja legal.

Escreva um script Python simples para fazer um loop archive_bookname/index.1-177.htme descarte-os usandoLindaSopa, localize os links com seletores de classe css ou correspondência simples de regex e useurllib.urlretrieve()para obter os arquivos. É assim que eu faria.

Responder3

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

informação relacionada