Faça o download do número arbitrário de arquivos usando o wget de um diretório auto-redirecionável

1

Eu preciso baixar um grande número de arquivos pdf (seria tedioso, se não impossível, coletar e agrupar todos os links) do site da minha universidade usando o wget, com links como este:

http://example.edu/path_to_directory/directory/foobar.pdf

Estou usando o seguinte comando:

wget -mk --no-check-certificate --load-cookies cookies.txt  http://example.edu/arbitrary_link_to_directory/directory/

Infelizmente os diretórios reais que contêm os pdfs redirecionam para uma página de erro, e tudo que consigo são um monte de arquivos html e css.

http://example.edu/path_to_directory/directory/

em um navegador redirecionaria um para

http://example.edu/path_to_directory/error/error.html

Seria possível baixar todos os arquivos em questão usando o wget?

    
por fernsehen.f1 05.11.2015 / 10:08

2 respostas

1

Quando eu quero baixar um monte de arquivos de um site que não facilitam (ou dificultam ativamente), eu gero uma lista de URLs dos arquivos com algo parecido com isto:

lynx -dump -listonly $URL | awk '/\.pdf/ {print $2}' > /tmp/pdflist.txt

Eu normalmente edito o arquivo com vi para deletar entradas que eu não quero baixar, e finalmente busco todas com wget:

wget --input-file=/tmp/pdflist.txt

Isso funciona bem para tarefas simples e geralmente funciona bem o suficiente para tarefas moderadamente difíceis ... mas para tarefas difíceis envolvendo a análise de links complicados de html e seguintes (e talvez usando cookies), eu escreverei um perl web -bot usando o módulo libwww-perl (também conhecido como LWP ).

    
por 05.11.2015 / 10:25
0

No site da sua universidade, há uma página fornecendo links para todos os PDFs? Ou como você sabe a lista de nomes de arquivos PDF?

Nesse caso, você precisará escrever um script chamado scraper para obter links de forma programática a partir dessa página e, em seguida, percorrer automaticamente essa lista e baixá-los com o wget ou outra ferramenta. Eu sugeriria PHP ou Python para escrever o scraper. Você gerenciará facilmente a eventual paginação no site de origem. Se estiver usando PHP, você pode simplesmente baixar arquivos com

file_put_contents('destination_filename', file_get_contents('source_url');

    
por 12.11.2015 / 21:51

Tags