Cree una copia local completa de un sitio web utilizando Wget


6

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 .htmlextensiones (* 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 :

  • .cssno 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?


Tengo un problema similar. Usando OS X 10.10 con wget 1.18. Ejecuto wget -mkpr https://consoreddomain.comy todo lo que obtengo es un directorio con una sola página index.html. Sería bueno si esto pudiera recibir una respuesta.
Julian

Hice algo como esto en el pasado y terminé abandonando algunas soluciones basadas en wget e instalando Heretrix (código abierto). Fue un poco difícil configurarlo, pero hizo un excelente trabajo al archivar el sitio.
GuitarPicker

@ Dr.Kameleon Um ... wget parece tener muchos errores en OSX ... ¿quieres una respuesta alternativa usando cURL?
rahuldottech

@Julian Si no puede solucionar el problema con OSX, siempre puede "romper una mosca (mantequilla) en el volante" . Utilice un sistema en vivo de Ubuntu (pen drive) o una máquina virtual solo para descargarlo. :-) El segundo puede ser acogedor para muchos otros propósitos.
Hastur

Respuestas:


3

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

.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)

  1. 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 ubicadas http://c1.wikicdn.comcomo sugiere la fuente de index.html

  2. Algunos 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í.

  3. Wget no parece reconocer los comentarios al analizar 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.

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.

  1. Muchos sitios no permiten que se descarguen utilizando gestores de descargas, por lo tanto, comprueban qué cliente originó la solicitud HTTP (que incluye el navegador o cualquier cliente que utilizó para solicitar un archivo de su servidor).

Úselo -U somebrowserpara fingir al cliente y pretender ser un navegador. Por ejemplo, -U mozillase 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.

  1. 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. Use --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

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

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.comcon --domains *e intente nuevamente. A ver donde llegamos. Debería poder recuperar los archivos CSS al menos.

NO se agrega extensión html

La extensión HTML se agrega cuando ejecuto el comando.

Los enlaces no se convierten

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_0tiene los argumentos v=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.


1

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.comlugar de https://www.censoreddomain.com(tenga en cuenta el www.). Una vez que agregué el www., wgetfelizmente 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 wgettodas las plataformas, no solo a OS X.


¡Buen punto! OS X o Ubuntu?
U. Muneeb

Estaba usando OS X, como el Dr. Kameleon.
Julian
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.