Escapando strings de consulta com wget --mirror

14

Estou usando wget --mirror --html-extension --convert-links para espelhar um site, mas acabo com muitos nomes de arquivos no formato post.php?id=#.html . Quando tento visualizá-los em um navegador, ele falha, porque o navegador ignora a string de consulta ao carregar o arquivo. Existe alguma maneira de substituir o caractere ? nos nomes de arquivos por outra coisa?

A resposta de --restrict-file-names=windows funcionou corretamente. Em conjunto com os sinalizadores --convert-links e --adjust-extension / -E (anteriormente denominado --html-extension , que também funciona, mas está obsoleto), produz um espelho que se comporta como esperado.

wget  --mirror --adjust-extension --convert-links --restrict-file-names=windows http://www.example
    
por user7301 07.02.2011 / 10:10

3 respostas

15

Veja a opção --restrict-file-names . Embora não seja exatamente destinado a esse propósito específico, --restrict-file-names=windows provavelmente ajudará você:

--restrict-file-names=modes

Change which characters found in remote URLs must be escaped during generation of local filenames. [...]

When "windows" is given, Wget escapes the characters \, |, /, :, ?, ", *, <, >, and the control characters in the ranges 0--31 and 128--159. In addition to this, Wget in Windows mode uses + instead of : to separate host and port in local file names, and uses @ instead of ? to separate the query portion of the file name from the rest. Therefore, a URL that would be saved as www.xemacs.org:4300/search.pl?input=blah in Unix mode would be saved as www.xemacs.org+4300/search.pl@input=blah in Windows mode.

    
por 07.02.2011 / 18:33
2

O seu navegador irá vê-lo bem se você usar um URL como

file:///tmp/example.com/post.php%3Fid=1.html

em vez de

file:///tmp/example.com/post.php?id=1.html

Nota: se você está tendo problemas com links internos de arquivos baixados, seria porque você encerrou o wget antes que ele fosse concluído com o download. Desde que você especificou --convert-links e --html-extension (aplica-se somente quando estes são fornecidos), o wget normalmente consertaria os links para usar% 3F em vez de? no entanto, faz isso no final, depois de terminar o download; se tiver sido interrompido, ele não terá consertado nenhum dos links e você ficará nessa situação. Claro, você sempre pode escrever um script para corrigir os links, mas ...

    
por 08.02.2011 / 06:22
-2

wget não tem uma opção para modificar o nome salvo. O que você provavelmente precisará fazer é criar um script para passar e substituir? com _ ou algo similar. Wget sozinho não pode fazer isso.

    
por 07.02.2011 / 16:58