
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)
.html
extensõ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 é :
.css
arquivos 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:
.css
arquivos 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)
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.com
como sugere a fonte do arquivoindex.html
.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.
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.
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 somebrowser
para falsificar o cliente e fingir ser um navegador. Por exemplo,-U mozilla
pode 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.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.com
por --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_0
tem 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.com
em vez de https://www.censoreddomain.com
(observe owww.
). Depois de adicionar o www.
, wget
felizmente 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 wget
todas as plataformas, não apenas ao OS X.