Crie uma cópia local completa de um site usando Wget

Crie uma cópia local completa de um site usando Wget

OK, aqui está o que eu preciso:

  • Estou no Mac (Mac OS X 10.6.8)
  • Quero espelhar completamente um site no meu disco rígido (isso éo que estou usando como teste)
  • Quero todas as imagens e pré-requisitos lá, para que o site possa ser navegado quando estiver offline
  • Quero que os links relativos em todas as páginas sejam atualizados adequadamente
  • (*opcional) .htmlextensões para todos os arquivos seriam ótimas, para que possam ser facilmente reconhecidos e abertos por um navegador

Isto é o que estou usando:

wget --recursive --no-clobber --page-requisites --convert-links --html-extension --domains wikispaces.com http://chessprogramming.wikispaces.com/

A coisa é :

  • .cssarquivos e imagens, etc. não parecem ter sido baixados - pelo menos, até o nível que deixei em execução (ok, talvez elesseriaser baixado se o processo foi concluído, então podemos pular este)
  • NENHUMA extensão html está sendo adicionada
  • Links não são convertidos

Então... alguma ideia?

Responder1

Em primeiro lugar, este parece ser um problema exclusivo do OS X. Posso usar o comando acima no Ubuntu 14.04 LTS e ele funciona imediatamente! Algumas sugestões:

.cssarquivos e imagens, etc. não parecem ter sido baixados – pelo menos, até o nível que deixei em execução (ok, talvez eles fossem baixados se o processo fosse concluído, então podemos pular este)

  1. Ao dizer --domains wikispaces.com, você não baixará arquivos CSS vinculados localizados em outros domínios. Algumas das folhas de estilo desse site estão localizadas, http://c1.wikicdn.comcomo sugere a fonte do arquivo index.html.

  2. Alguns sites não permitem que você acesse os arquivos vinculados (imagens referenciadas) diretamente usando o link (consulteesta página). Você só pode visualizá-los através do site. Esse não parece ser o caso aqui.

  3. O Wget parece não reconhecer comentários ao analisar o HTML. Vejo o seguinte quando o Wget está em execução:

    --2016-07-01 04:01:12--  http://chessprogramming.wikispaces.com/%3C%25-%20ws.context.user.imageUrlPrefix%20%25%3Elg.jpg
    Reusing existing connection to chessprogramming.wikispaces.com:80.
    HTTP request sent, awaiting response... 404 Not Found
    2016-07-01 04:01:14 ERROR 404: Not Found.
    

    Abrir o link no navegador leva você a uma página de login. O nome do arquivo sugere que ocorreu em algum lugar dos comentários.

  4. Muitos sites não permitem o download por meio de gerenciadores de download, por isso verificam qual cliente originou a solicitação HTTP (o que inclui o navegador ou qualquer cliente que você usou para solicitar um arquivo do servidor).

    Use -U somebrowserpara falsificar o cliente e fingir ser um navegador. Por exemplo, -U mozillapode ser adicionado para informar ao servidor que um Mozilla/Firefox está solicitando a página. Este, entretanto, não é o problema aqui, já que posso baixar o site sem esse argumento.

  5. A taxa de download e solicitação é importante. Os servidores não querem que seu desempenho seja aumentado por robôs que solicitam dados de seus sites. Use argumentos --limit-rate=e --wait=no Wget para limitar a taxa de download e aguarde alguns segundos entre a geração de solicitações de obtenção de arquivos individuais.

    por exemplo

    wget -r --wait=5 --limit-rate=100K <other arguments>
    

    esperar 5 segundos entre as solicitações de obtenção e limitar a taxa de download a 100 Kbps. Mais uma vez, este não é o problema aqui porque o servidor não exigiu que eu limitasse a taxa de download para buscar o site.

O caso mais possível aqui é (1). Substitua --domains wikispaces.compor --domains *e tente novamente. Vamos ver onde chegamos. Você deve conseguir pelo menos buscar os arquivos CSS.

NENHUMA extensão html está sendo adicionada

A extensão HTML está sendo adicionada quando executo o comando.

Links não são convertidos

Não acho que esteja totalmente correto aqui, mas não espere que os links funcionem imediatamente quando você espelhar um site.

Quando você passa argumento para a solicitação HTTP get (por exemplo http://chessprogramming.wikispaces.com/wiki/xmla?v=rss_2_0tem os argumentos v=rss_2_0), a solicitação é tratada com algum script rodando no servidor, por exemplo PHP. Os argumentos ajudarão você a buscar a versão correta do script dependendo do(s) argumento(s). Lembre-se, quando você está espelhando um site, especialmente um Wiki, que roda em PHP, você não pode exatamenteespelhoum site, a menos que você obtenha os scripts PHP originais. As páginas HTML retornadas por scripts PHP são apenas uma face da página que você pode esperar ver com esse script. O algoritmo correto quegeraa página é armazenada no servidor e só será espelhada corretamente se você buscar o arquivo PHP original, o que não é possível fazer com HTTP. Para isso você precisa de acesso FTP ao servidor.

Espero que isto ajude.

Responder2

Opção 1 deresposta do usuário612013foi certamente o problema no meu caso. Na verdade, deu errado porque eu solicitei https://censoreddomain.comem vez de https://www.censoreddomain.com(observe owww.). Depois de adicionar o www., wgetfelizmente raspei todo o site para mim. Então é importantecorresponda exatamente ao nome canônico do domínio que você está tentando copiar.

Como o erro foi meu, acho que esse "problema" se aplica a wgettodas as plataformas, não apenas ao OS X.

informação relacionada