it-swarm-pt.tech

Como você usa WGET para espelhar um site de nível 1 de profundidade, recuperando JS, recursos CSS, incluindo imagens CSS?

Finja que eu queria que uma cópia simples da página fosse baixada para meu HD para manutenção permanente. Não estou procurando uma obtenção recursiva profunda, apenas uma única página, mas também quaisquer recursos carregados por essa página para serem baixados.

Exemplo: https://www.tumblr.com/

Espero:

  • O index.html
  • Qualquer imagem carregada
  • Quaisquer arquivos JS carregados
  • Quaisquer arquivos CSS carregados
  • Todas as imagens carregadas no arquivo CSS
  • links para os recursos da página localizados para trabalhar com as cópias baixadas (sem dependência da web)

Estou interessado em saber se você pode me ajudar a encontrar a melhor sintaxe wget ou outra ferramenta que faça isso. As ferramentas que experimentei geralmente não conseguem carregar as imagens por CSS, de modo que a página nunca parece correta quando carregada localmente. Obrigado!

Solução Tangente

Eu encontrei uma maneira de fazer isso usando o FireFox. O save padrão está quebrado e há um addon chamado "Save Complete" que aparentemente pode fazer um bom trabalho com isso. No entanto, você não pode baixá-lo porque diz que não é compatível com a versão atual do FireFox. A razão é que ele foi incluído neste addon: "Mozilla Archive Format". Instale-o e, ao usar Arquivo> "Salvar página como ..", haverá uma nova opção chamada "Página da Web completa", que é essencialmente o complemento antigo, que corrige a implementação padrão que o FireFox usa (o que é terrível). Esta não é uma solução WGET, mas fornece uma solução viável.

EDIT: Outra questão ridícula para quem pode estar acompanhando esta questão no futuro, tentando fazer isso. Faça com que o complemento funcione corretamente, você precisa de Ferramentas> Formato de arquivo do Mozilla e alterar a (terrível) configuração padrão de "tirar um instantâneo fiel da página" para "preservar scripts e fonte usando Salvar completo", caso contrário, o complemento esvaziará todos seus arquivos de script e substitua-os pelo texto "/ * Script removido por instantâneo salvar * /".

11
Lana Miller

wget -p -k http://ExampleSite.com

O -p fornecerá todos os elementos necessários para visualizar o site corretamente (css, imagens, etc). O -k mudará todos os links (para incluir aqueles para CSS e imagens) para permitir que você visualize a página offline como ela apareceu online.

Atualização: Isso é específico para o seu site de exemplo: tumblr.com

wget -H -N -k -p --exclude-domains quantserve.com --no-check-certificate -U "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0a2) Gecko/20110613 Firefox/6.0a2" https://www.tumblr.com

A Divisão:

-H = Permite que wget vá para abranger um Host estrangeiro. Obrigatório uma vez que tumblr não tem suas imagens na página inicial no mesmo endereço, eles estão usando secure.assets.tumblr.com veja nota sobre exclusão de domínios

-N = irá pegar apenas os arquivos que são mais novos que os que você tem atualmente, no caso de você estar baixando a mesma página novamente

-k = converter seus links para visualizá-los offline adequadamente

-p = captura todos os elementos necessários para visualizá-lo corretamente (css, imagens, etc)

--exclude-domains = uma vez que a página inicial do tumblr.com tem um link para quantserve.com e suponho que você não queira essas coisas, você precisa excluí-las do download do wget. Nota: Este é um muito importante que você deve usar com -H porque se você for a um site e eles têm vários links para hosts externos (pense em coisas de anunciantes e análises), então você também vai pegar essas coisas!

--no-check-certificate necessário, pois o tumblr está usando https

-U muda o agente do usuário. Não é realmente necessário neste caso, uma vez que permite o agente de usuário wget padrão, mas sei que alguns sites o bloquearão. Eu apenas coloquei aqui para caso você tenha problemas em outros sites. No snippet de exemplo que dei, ele aparece como Mozilla Firefox 6.02a

finalmente você tem o site: https://www.tumblr.com

12
serk

Para o site específico que você mencionou e muitos outros codificados como ele, wget (e curl) simplesmente não funcionará. O problema é que alguns dos links de ativos necessários para processar a página em um navegador são criados por meio de javascript. Wget tem uma solicitação de recurso pendente para executar javascript:

http://wget.addictivecode.org/FeatureSpecifications/JavaScript

No entanto, até que isso seja concluído, sites que criam links de ativos usando javascript não serão clonáveis ​​usando wget. A solução mais fácil é encontrar uma ferramenta que realmente construa um DOM e analise o javascript como um mecanismo de navegador (ou seja, o método firefox que você mencionou).

3
polynomial

Você também pode fazer isso automaticamente (ou programaticamente se você fizer a codificação) emitindo um comando via Shell usando wget:

wget --convert-links -r http://www.yourdomain.com

Ele fará o download da página e dos arquivos internos e tornará os links locais.

1
Jhourlad Estrella