Problema com o download recursivo usando wget

5

Estou tentando aprender a usar o download recursivo com wget na página de informações do wget.

Por exemplo, vamos tentar baixar todas as imagens de xkcd . Uma lista de todas as páginas está presente no arquivo xkcd . Todas as páginas têm um único arquivo png nelas. O arquivo png está presente em um host diferente, imgs.xkcd.com.

Eu tentei com este comando:

wget -r -HD imgs.xkcd.com -l 2 -A.png http://www.xkcd.com/archive/ --random-wait

O resultado:

 xkcd $ tree
.

0 directories, 0 files

 xkcd $ wget -r -HD imgs.xkcd.com -l 2 -A.png http://www.xkcd.com/archive/ --random-wait
--2014-01-10 18:49:55--  http://www.xkcd.com/archive/
Resolving www.xkcd.com (www.xkcd.com)... 107.6.106.82
Connecting to www.xkcd.com (www.xkcd.com)|107.6.106.82|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 83226 (81K) [text/html]
Saving to: 'www.xkcd.com/archive/index.html'

100%[=============================================================================================================>] 83,226      68.3K/s   in 1.2s    

2014-01-10 18:49:57 (68.3 KB/s) - 'www.xkcd.com/archive/index.html' saved [83226/83226]

Loading robots.txt; please ignore errors.
--2014-01-10 18:49:57--  http://imgs.xkcd.com/robots.txt
Resolving imgs.xkcd.com (imgs.xkcd.com)... 107.6.106.82
Reusing existing connection to www.xkcd.com:80.
HTTP request sent, awaiting response... 404 Not Found
2014-01-10 18:49:58 ERROR 404: Not Found.

Removing www.xkcd.com/archive/index.html since it should be rejected.

--2014-01-10 18:49:58--  http://imgs.xkcd.com/static/terrible_small_logo.png
Reusing existing connection to www.xkcd.com:80.
HTTP request sent, awaiting response... 200 OK
Length: 11001 (11K) [image/png]
Saving to: 'imgs.xkcd.com/static/terrible_small_logo.png'

100%[=============================================================================================================>] 11,001      --.-K/s   in 0.05s   

2014-01-10 18:49:58 (229 KB/s) - 'imgs.xkcd.com/static/terrible_small_logo.png' saved [11001/11001]

FINISHED --2014-01-10 18:49:58--
Total wall clock time: 2.9s
Downloaded: 2 files, 92K in 1.2s (74.4 KB/s)

 xkcd $ tree
.
|-- imgs.xkcd.com
|   '-- static
|       '-- terrible_small_logo.png
'-- www.xkcd.com
    '-- archive

4 directories, 1 file

 xkcd $

Isso obviamente não é o que eu quero. Parece que o wget rejeitou www.xkcd.com/archive/index.html antes de lê-lo e verificar se há links. Mesmo se .html for adicionado à lista de aceitação (como sugerido em uma resposta), ele não fará o download das imagens. Qual é o erro no comando?

    
por Kartik 10.01.2014 / 14:21

2 respostas

3

O problema é sua restrição em quais links seguir. Você configurou para seguir apenas links para imgs.xkcd.com. Mas a página / archive / / não contém links diretamente lá - ela contém apenas links para outras páginas em www.xkcd.com e, em seguida, essas páginas contêm o link para imgs.xkcd.com.

Então, você precisará permitir esse domínio também. Este comando funciona:

wget -r -HD imgs.xkcd.com,www.xkcd.com -l 2 -A.png http://www.xkcd.com/archive/ --random-wait
    
por 10.01.2014 / 14:36
0

Eu acho que o problema às vezes pode ser também com:

Reusing existing connection to www.xkcd.com:80.

HTTP request sent, awaiting response... 200 OK

que indica que os arquivos não foram baixados, mas foram reutilizados.

Então, eu acho que a remoção dos arquivos existentes em alguns casos, como index.html (que poderia estar quebrando o download recursivo mais adiante) também ajudaria.

Ou basicamente começando do zero (sem -c ).

    
por 13.04.2015 / 13:09