Salve uma única página da web (com imagens de fundo) com o Wget


73

Eu quero usar o Wget para salvar páginas da Web únicas (não recursivamente, nem sites inteiros) para referência. Muito parecido com a "Página da Web do Firefox, completa".

Meu primeiro problema é: não consigo fazer com que o Wget salve as imagens de plano de fundo especificadas no CSS. Mesmo que ele salvasse os arquivos de imagem de plano de fundo, acho que --convert-links converteria os URLs da imagem de plano de fundo no arquivo CSS para apontar para as imagens de plano de fundo salvas localmente. O Firefox tem o mesmo problema.

Meu segundo problema é: se houver imagens na página que eu queira salvar que estejam hospedadas em outro servidor (como anúncios), elas não serão incluídas. --span-hosts não parece resolver esse problema com a linha abaixo.

Estou a usar: wget --no-parent --timestamping --convert-links --page-requisites --no-directories --no-host-directories -erobots=off http://domain.tld/webpage.html


11
exatamente a mesma linha (wget --no-parent --timestamping --converter-links --página requisitos --no-diretórios --no-host-directory -erobots = off domain.tld) ​​na verdade salva as imagens de plano de fundo referenciadas em CSS após a atualização para 1.12. O manual diz: "Com http urls, o Wget recupera e analisa o html ou css do URL fornecido, recuperando os arquivos aos quais o documento se refere, por meio de marcações como href ou src ou valores de css uri especificados usando a função 'url ()' notação." Segundo problema ainda precisa ser resolvido
user14124

Respostas:


106

Na página do manual Wget :

Na verdade, para baixar uma única página e todos os seus requisitos (mesmo que existam em sites separados) e garantir que o lote seja exibido corretamente localmente, esse autor gosta de usar algumas opções além de '-p':

wget -E -H -k -K -p http://www.example.com/

Também no caso de robots.txtnão permitir você adicionar-e robots=off


Parece que é apenas reescrevendo js e css para urls absolutos
Greg Dean

11
Nevermind, foi robots.txt não permitindo-me atualizar a resposta com a solução
Greg Dean

19
Expandido:wget --adjust-extension --span-hosts --convert-links --backup-converted --page-requisites [url]
sam

4
Ou melhor ainda wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=windows[url]
Petah

@ {etah: Eu tentei seu comando com seus argumentos, ele fará o download de outras páginas da Web além da especificada.
Tim

7

O wgetcomando oferece a opção --mirror, que faz o mesmo que:

$ wget -r -N -l inf --no-remove-listing

Você também pode participar -xpara criar uma hierarquia de diretórios inteira para o site, incluindo o nome do host.

Talvez você não tenha conseguido encontrar isso se não estiver usando a versão mais recente wget.


11
Isso provavelmente rastreará o site inteiro com seus sub-URLs
4253wyerg4e 13/09/18

2

Parece que o wgetFirefox não está analisando o CSS para obter links para incluir esses arquivos no download. Você pode contornar essas limitações, criando o que puder e criando scripts para a extração de links de qualquer CSS ou Javascript nos arquivos baixados para gerar uma lista dos arquivos que você perdeu. Em seguida, uma segunda execução wgetdessa lista de links poderia capturar o que estava faltando (use o -isinalizador para especificar os URLs de uma lista de arquivos).

Se você gosta do Perl, existe um módulo CSS :: Parser no CPAN que pode lhe proporcionar um meio fácil de extrair links dessa maneira.

Observe que wgetestá analisando apenas determinadas marcações html ( href/ src) e css uris ( url()) para determinar quais requisitos de página obter. Você pode tentar usar complementos do Firefox, como DOM Inspector ou Firebug, para descobrir se as imagens de terceiros que você não está obtendo estão sendo adicionadas por Javascript - nesse caso, será necessário recorrer a um script ou plugin do Firefox para obtê-las. também.


Como eu disse no comentário do meu primeiro post, parece que foi corrigido na v1.12. Ainda não sei como incluir imagens que estão em outros servidores.
user14124

sim, analisar o CSS é novo no v1.12 wget, é no topo do changelog: freshmeat.net/urls/376000c9c7a02f7a3592180c2390ff04
quack quixote

Tente adicionar a opção -H à lista. Ele representa --span-hosts e permite o download de conteúdo de hosts externos.
Michael

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.