Como posso usar o wget para criar uma lista de URLs de um index.html?

2

Portanto, wget tem a capacidade de baixar recursivamente arquivos, no entanto, ele faz um arquivo de cada vez.

Gostaria de passar um URL de diretório e cada URL encontrado na recursão dele para gerar um processo de download.

Uma maneira que eu estava pensando em fazer isso é usar wget para imprimir os URLs que encontra e, em seguida, alimentar essas URLs em instâncias separadas de wget (via wget URL_1 & , wget URL_2 & etc).

Alguma idéia?

    
por user3370173 05.08.2014 / 16:15

3 respostas

1

Use grep com ele:

wget url -rqO - | grep -oE '[a-z]+://[^[:space:]"]+'
    
por 05.08.2014 / 16:53
0

Uma maneira de resolver esse problema é coletar todos os links em um arquivo de texto simples e fazer o seguinte: -

while read line; do
    echo "Downloading ${line}"
    wget $line &        
done < $1

Salve este arquivo como script.sh e torne-o executável e execute-o como

$ ./script.sh

Uma maneira melhor de resolver permanentemente este problema seria reescrever o wget para ser inerentemente paralelo.

    
por 05.08.2014 / 18:23
0

No meu caso, funcionou por encadeamento dois wget s:

$ wget -O - -o /dev/null http://site.to.get.urls.from | grep -o 'some_regex' | wget -i -

O primeiro wget produzirá uma lista de URLs com arquivos, que é usada como entrada "arquivo" para o segundo wget .

Note que esta é uma versão simplificada para mostrar a técnica por trás dela. O pipe entre o comando grep e o segundo wget pode, de fato, ser combinado com muito mais comandos canalizados como sed , awk ou cut (especialmente se o código-fonte HTML for um pouco mais complexo que o usual e, portanto, a análise é mais difícil).

Isso é lida : certifique-se sempre de chamar primeiro o wget interno para verificar, em stdout , se suas expressões regulares estão funcionando corretamente.

    
por 01.09.2014 / 21:25