OK, esto es lo que necesito:
- Estoy en Mac (Mac OS X 10.6.8)
- Quiero duplicar completamente un sitio web en mi disco duro (esto es lo que estoy usando como prueba )
- Quiero todas las imágenes y requisitos previos allí, para que el sitio web sea navegable cuando esté desconectado
- Quiero que los enlaces relativos en todas las páginas se actualicen en consecuencia
- Las
.html
extensiones (* opcionales) a todos los archivos serían excelentes, de modo que un navegador pueda reconocerlas y abrirlas fácilmente
Esto es lo que estoy usando:
wget --recursive --no-clobber --page-requisites --convert-links --html-extension --domains wikispaces.com http://chessprogramming.wikispaces.com/
La cosa es :
.css
no parece que se descarguen archivos e imágenes, etc., al menos, hasta el nivel que dejé corriendo (bueno, tal vez se descargarían si el proceso se completara, por lo que podemos omitir este)- NO se agrega extensión html
- Los enlaces no se convierten
Entonces ... ¿alguna idea?
wget -mkpr https://consoreddomain.com
y todo lo que obtengo es un directorio con una sola página index.html. Sería bueno si esto pudiera recibir una respuesta.Respuestas:
En primer lugar, esto parece ser un problema único de OS X. ¡Puedo usar el comando anterior en Ubuntu 14.04 LTS y funciona de inmediato! Algunas sugerencias
Cuando diga
--domains wikispaces.com
, no descargará archivos CSS vinculados ubicados en otros dominios. Algunas de las hojas de estilo en ese sitio web están ubicadashttp://c1.wikicdn.com
como sugiere la fuente de index.htmlAlgunos sitios web no le permiten acceder a sus archivos vinculados (imágenes de referencia) directamente utilizando su enlace (consulte esta página ). Solo puede verlos a través del sitio web. Sin embargo, ese no parece ser el caso aquí.
Wget no parece reconocer los comentarios al analizar el HTML. Veo lo siguiente cuando Wget se está ejecutando:
Abrir el enlace en el navegador te lleva a una página de inicio de sesión. El nombre del archivo sugiere que ocurrió en algún lugar de los comentarios.
Úselo
-U somebrowser
para fingir al cliente y pretender ser un navegador. Por ejemplo,-U mozilla
se puede agregar para decirle al servidor que un Mozilla / Firefox está solicitando la página. Sin embargo, este no es el problema aquí, ya que puedo descargar el sitio sin este argumento.--limit-rate=
y--wait=
argumentos en Wget para limitar la velocidad de descarga y espere unos segundos entre generar solicitudes de obtención de archivos individuales.p.ej
esperar 5 segundos entre las solicitudes de obtención y limitar la velocidad de descarga a 100 Kbps. Una vez más, este no es el problema aquí porque el servidor no me exigió limitar la velocidad de descarga para obtener el sitio web.
El caso más posible aquí es (1). Reemplace
--domains wikispaces.com
con--domains *
e intente nuevamente. A ver donde llegamos. Debería poder recuperar los archivos CSS al menos.La extensión HTML se agrega cuando ejecuto el comando.
No creo que tenga toda la razón aquí, pero no espere que los enlaces funcionen de fábrica cuando duplica un sitio.
Cuando pasa un argumento a la solicitud de obtención HTTP (por ejemplo,
http://chessprogramming.wikispaces.com/wiki/xmla?v=rss_2_0
tiene los argumentosv=rss_2_0
), la solicitud se trata con algún script que se ejecuta en el servidor, por ejemplo PHP. Los argumentos lo ayudarán a obtener la versión correcta de la secuencia de comandos dependiendo de los argumentos. Recuerde, cuando está duplicando un sitio, especialmente un Wiki, que se ejecuta en PHP, no puede reflejar exactamente un sitio a menos que obtenga los scripts PHP originales. Las páginas HTML devueltas por los scripts PHP son solo una cara de la página que puede esperar ver con ese script. El algoritmo correcto que genera la página se almacena en el servidor y solo se reflejará correctamente si obtiene el archivo PHP original, lo que no puede hacer con HTTP. Para eso necesita acceso FTP al servidor.Espero que esto ayude.
fuente
La opción 1 de la respuesta rusa Soyuz Rocket fue sin duda el problema en mi caso. De hecho, simplemente salió mal porque solicité en
https://censoreddomain.com
lugar dehttps://www.censoreddomain.com
(tenga en cuenta elwww.
). Una vez que agregué elwww.
,wget
felizmente raspé todo el sitio para mí. Por lo tanto, es importante que coincida exactamente con el nombre canónico del dominio que está intentando raspar .Como el error fue mío, creo que este "truco" se aplica a
wget
todas las plataformas, no solo a OS X.fuente