Eu tenho uma solução embora não seja perfeita e exija que você tenha curl e perl instalado, ambos já devem estar no Linux Mint, embora minha solução inclua um módulo Perl que escrevi e que está disponível no CPAN. Novamente cpan deve estar disponível e instalado no Linux Mint, você pode ter que configurá-lo se ainda não o fez.
Para o módulo App :: ExtractLinks , você pode instalá-lo assim:
$ cpan App::ExtractLinks
Contanto que sua configuração do Perl esteja correta e todos os módulos do CPAN estejam visíveis em seu caminho, agora você poderá executar extract-links no seu terminal. Se você fizer isso sem precisar nada, você não verá nada, pois espera apenas um fluxo de HTML, e ele gera um resultado padrão (imprime no seu terminal) qualquer URL que apareça nos atributos href="" ou src="" , então é muito simples, mas combinando-o com algumas coisas no terminal, podemos quase alcançar o que você pediu.
Se você salvar o seguinte script bash em um arquivo e conceder a ele as permissões executáveis chmod 755 ou executá-lo desta forma bash filename :
#!/usr/bin/env bash
while read url
do
while read id
do
curl -s -I "http://files.all-free-download.com/free_download_graphic_$id.html" | perl -n -e '/^Location: (.*)$/ && print "$1\n"'
done < <(curl -s "$url" | extract-links | grep "_download" | grep -Eo '[0-9]*')
done < <(curl -s http://all-free-download.com/free-photos/ | extract-links | grep "\/download\/")
Agora, vamos tentar explicá-lo, linha por linha.
Primeiramente, enviamos a saída do seguinte comando para um loop while read .
curl -s http://all-free-download.com/free-photos/ | extract-links | grep "\/download\/")
Isso obtém o HTML do URL que você forneceu, canaliza o fluxo de saída para extract-links , (o argumento -s para curl significa apenas curl silenciosamente faz isso) que exibe todos os links encontrados na página . Em seguida, pegamos essa lista de links e procuramos apenas os que possuem /download/ , o que o comando grep está fazendo. Esta não é uma solução geral, é claro, eu tive que dar uma olhada no código HTML do site que você forneceu e descobri a lógica de URL deles.
Depois de obtermos apenas links com /download/ , passamos apenas eles para o loop while read , que pega cada um de cada vez e atribui o link a uma variável $url . Em seguida, fazemos uma operação semelhante novamente:
curl -s "$url" | extract-links | grep "_download" | grep -Eo '[0-9]*'
Isso executa a mesma coisa que já fizemos, mas sobre esse link em particular, desta vez filtrando qualquer link que tenha _download , e só pegue os números do link. Novamente, estou descobrindo o esquema que eles devem usar para organizar links e downloads.
Deixe-me dizer neste ponto que o motivo disso é que não há links diretos para .zip arquivos em nenhum lugar do site, os .zip downloads começam depois de um redirecionamento HTTP quando você navega para certas páginas. O que me leva à última seção:
curl -s -I "http://files.all-free-download.com/free_download_graphic_$id.html" | perl -n -e '/^Location: (.*)$/ && print "$1\n"'
Isso está pegando apenas os números dos links que recuperamos na etapa anterior, os canaliza novamente em um loop while read , atribui cada um como variável $id e novamente usamos curl desta vez com o -I option, que apenas recupera os cabeçalhos (em vez de baixar o arquivo), cada página nesse ponto faz um redirecionamento que aponta para o próprio arquivo zip. Nós executamos a saída de curl por meio de um script perl embutido, que é apenas um regex para obter o cabeçalho Location HTTP, que é aquele que especifica para qual arquivo redirecionar.
Então, tudo que você precisa fazer é:
bash my_script.sh > links.txt
Editar
Uma ressalva é que links repetidos podem aparecer, apenas com base em meus testes com esse site que você mencionou, então tenha isso em mente.
E, obviamente, essa não é uma operação muito eficiente, mas, novamente, ela é automatizada e não há necessariamente nenhuma outra maneira de acessar os dados desejados sem ter algum acesso de administrador ao site.