Baixe uma lista de páginas da Web em um arquivo e renomeie-as para evitar sobrescrever?

5
$ wget -r -np  -nH --cut-dirs=2 -p -k "http://www.example.com/1" -O test.html
Cannot specify both -k and -O if multiple URLs are given, or in combination
with -p or -r. See the manual for details.

Usage: wget [OPTION]... [URL]...

Eu me pergunto como resolver o problema?

No meu problema real, eu armazenei urls de lista em um arquivo de texto, como

http://www.example.com/1
http://www.example.com/2
http://www.example.com/3

Quero fazer o download de cada página da Web com os arquivos afiliados necessários para deslocar a página da Web.

Por padrão, cada arquivo baixado é chamado de index.html , sobrescrevendo a página da web baixada anteriormente. Por isso, estou tentando renomear os arquivos baixados em números que representam sua ordem de download:

i=0
for url in $(cat ../htmls); 
do  
wget -r -np  -nH --cut-dirs=1 -p -k "$url" -O $(printf %04d $i).html; 
i=$((i+1))
done

É quando o erro no início aparece.

    
por Tim 18.06.2015 / 13:40

2 respostas

5

Você precisará dos arquivos index.html , pois os vários links nas páginas da Web dependerão deles. Gostaria de salvar cada página da Web em seu próprio diretório:

while read url; do
    mkdir "$url";
    cd "$url"
    wget -r -np  -nH --cut-dirs=1 -p -k "$url"
    cd ../
done

Acontece que wget já faz isso por padrão, então use a abordagem de Stephen .

    
por 18.06.2015 / 13:48
4

O comportamento padrão de wget com -r é armazenar os arquivos baixados nos diretórios correspondentes à URL, para que você possa deixar isso:

wget -r -np -p -i myurls

(onde myurls é seu arquivo contendo as URLs para download).

A massa de diretórios resultante pode não ser muito agradável para você, mas garantirá que você tenha tudo o que precisa para exibir os arquivos baixados e que nada seja sobrescrito ...

    
por 18.06.2015 / 13:56

Tags