Faça com que o wget converta links HTML em relativos após o download se -k não foi especificado

32

A -kopção (ou --convert-link) converterá links em suas páginas da Web em relativos após a conclusão do download, como a página de manual diz:

Após a conclusão do download, converta os links no documento para torná-los adequados para exibição local. Isso afeta não apenas os hiperlinks visíveis, mas qualquer parte do documento vinculado a conteúdo externo, como imagens incorporadas, links para folhas de estilo, hiperlinks para conteúdo não HTML, etc.

Portanto, se eu não especificar -k, posso executar wgetnovamente após o download e corrigir isso? Se sim, qual seria o comando adequado? Meu palpite é wget -c [previous options used] [url]e execute-o no mesmo diretório de trabalho em que o arquivo foi baixado.

Nathaniel
fonte
1
você certamente poderia pós-processar os arquivos após o download, mas não sei se wgetfaz isso. sua ideia de experimentá-lo -cé boa. hora de experimentar!
quack quixote
Tem um utilitário à mão para converter os links, por acaso? Em execução no Windows, a propósito ...
Nathaniel
perl... sem roteiro pré-escrito, mas se eu queria uma solução DIY que é o que eu uso
quack quixote
Ok obrigado. Não possui o Perl instalado e levaria muito tempo para obtê-lo. Felizmente, descobri como fazer o wget fazer o trabalho. Eu postei uma resposta.
1957 Nathaniel
Aliás, o ActivePerl é uma porta perl do Windows; é um instalador relativamente pequeno e tenho certeza de que a maioria dos módulos CPAN trabalha com ele. activestate.com/activeperl
quack quixote

Respostas:

23

Sim, você pode wgetfazer isso. Eu diria que use wget -nc -k [previous options] [previous url]. -ncé não-clobber. Na página do manual:

Quando −ncé especificado, esse comportamento é suprimido e o Wget se recusará a baixar novas cópias do arquivo.

E a -kopção faz a conversão do link. Portanto, o wget começa a cavar no servidor remoto, vê todos os arquivos que você já possui, se recusa a baixá-los novamente e, em seguida, edita os links HTML para parentes quando terminar. Agradável.

Nathaniel
fonte
3
Não, isso não funciona para mim. Ele baixa o primeiro arquivo (por exemplo, index.html), veja que já está baixado uma parada. Se você deseja que o wget trabalhe recursivamente, use a opção timestamp (-K). Portanto, o wget deve solicitar que todos os cabeçalhos correspondam se o arquivo for mais recente ou não.
12
GNU Wget 1.13.3 construído em darwin11.1.0. Tentando usar as duas opções ao mesmo tempo dáBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
sua pergunta não pediu sem -k?
barlop
8
Cf. @ Comentário de LudovicKuty - a partir do wget 1.13 --no-clobbernão funciona --convert-links. Veja http://savannah.gnu.org/bugs/?31781 para obter detalhes.
David Moles
1
Em cuidados caso de alguém, eu construí uma imagem de janela de encaixe para wget 1.12: hub.docker.com/r/berezovskyi/wget1.12
berezovskyi