
Bien, esto es lo que necesito:
- Estoy en Mac (Mac OS X 10.6.8)
- Quiero reflejar completamente un sitio web en mi disco duro (esto eslo que estoy usando como prueba)
- Quiero que todas las imágenes y requisitos previos estén allí, para que el sitio web se pueda navegar sin conexión.
- Quiero que los enlaces relativos en todas las páginas se actualicen en consecuencia
- (* opcional)
.html
las extensiones para todos los archivos serían geniales, para que un navegador pueda reconocerlos y abrirlos 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
Los archivos e imágenes, etc. no parecen descargarse, al menos hasta el nivel que dejé en ejecución (bueno, tal vez se hayan descargado).haríadescargarse si el proceso se completó, por lo que podemos omitir este)- NO se está agregando ninguna extensión html
- Los enlaces no se convierten.
Entonces... ¿alguna idea?
Respuesta1
En primer lugar, esto parece ser un problema exclusivo de OS X. ¡Puedo usar el comando anterior en Ubuntu 14.04 LTS y funciona de inmediato! Algunas sugerencias:
.css
Los archivos e imágenes, etc. no parecen descargarse, al menos hasta el nivel que dejé en ejecución (bueno, tal vez se descargarían si se completara el proceso, por lo que podemos omitir este).
Cuando dices
--domains wikispaces.com
, no descargarás archivos CSS vinculados ubicados en otros dominios. Algunas de las hojas de estilo de ese sitio web se encuentran en,http://c1.wikicdn.com
como sugiere la fuente deindex.html
.Algunos sitios web no le permiten acceder a sus archivos vinculados (imágenes referenciadas) directamente utilizando su enlace (veresta página). Sólo puedes verlos a través del sitio web. Aunque ese no parece ser el caso aquí.
Wget no parece reconocer los comentarios mientras analiza el HTML. Veo lo siguiente cuando Wget se está ejecutando:
--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.
Al abrir el enlace en el navegador, accederá a una página de inicio de sesión. El nombre del archivo sugiere que ocurrió en algún lugar de los comentarios.
Muchos sitios no permiten la descarga mediante administradores de descargas, por lo que verifican qué cliente originó la solicitud HTTP (que incluye el navegador o cualquier cliente que haya utilizado para solicitar un archivo de su servidor).
Úselo
-U somebrowser
para falsificar al cliente y pretender ser un navegador. Por ejemplo,-U mozilla
se puede agregar para indicarle al servidor que Mozilla/Firefox está solicitando la página. Sin embargo, este no es el problema aquí ya que puedo descargar el sitio sin este argumento.La tasa de descarga y solicitud es importante. Los servidores no quieren que su rendimiento se vea afectado por robots que solicitan datos de su sitio. Utilice los argumentos
--limit-rate=
y--wait=
en Wget para limitar la velocidad de descarga y espere unos segundos entre la generación de solicitudes de obtención de archivos individuales.p.ej
wget -r --wait=5 --limit-rate=100K <other arguments>
esperar 5 segundos entre 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 pidió que limitara la velocidad de descarga para buscar el sitio web.
El caso más posible aquí es (1). Reemplace el --domains wikispaces.com
con --domains *
y vuelva a intentarlo. Veamos hasta dónde llegamos. Al menos deberías poder recuperar los archivos CSS.
NO se está agregando ninguna extensión html
La extensión HTML se agrega cuando ejecuto el comando.
Los enlaces no se convierten.
No creo que esté totalmente en lo cierto, pero no espere que los enlaces funcionen de inmediato cuando refleja 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 argumentos v=rss_2_0
), la solicitud se procesa con algún script que se ejecuta en el servidor, por ejemplo PHP. Los argumentos le ayudarán a obtener la versión correcta del script según los argumentos. Recuerde, cuando está reflejando un sitio, especialmente un Wiki, que se ejecuta en PHP, no puede exactamenteespejoun sitio a menos que obtenga los scripts PHP originales. Las páginas HTML devueltas por scripts PHP son sólo una cara de la página que puede esperar ver con ese script. El algoritmo correcto quegenerala página se almacena en el servidor y solo se reflejará correctamente si recupera el archivo PHP original, lo cual no puede hacer con HTTP. Para eso necesita acceso FTP al servidor.
Espero que esto ayude.
Respuesta2
Opción 1 derespuesta del usuario612013Sin duda fue el problema en mi caso. De hecho, simplemente salió mal porque solicité https://censoreddomain.com
en lugar de https://www.censoreddomain.com
(tenga en cuenta elwww.
). Una vez que agregué el archivo www.
, wget
felizmente eliminé todo el sitio por mí. Entonces es importantecoincidir exactamente con el nombre canónico del dominio que está intentando extraer.
Dado que el error fue mío, creo que este "truco" se aplica a wget
todas las plataformas, no solo a OS X.