2012-02-13 27 views
28

Estoy buscando recomendaciones para un programa para raspar y descargar un sitio web corporativo completo.Rascar todo un sitio web

El sitio está impulsado por un CMS que ha dejado de funcionar y repararlo es costoso y podemos volver a desarrollar el sitio web.

Así que me gustaría obtener todo el sitio web como contenido simple html/css/image y hacer actualizaciones menores según sea necesario hasta que aparezca el nuevo sitio.

¿Alguna recomendación?

Respuesta

19

Considere HTTrack. Es una utilidad de navegador sin conexión gratuita y fácil de usar.

Le permite descargar un sitio de la World Wide Web de Internet a un directorio local, construir recursivamente todos los directorios, obtener HTML, imágenes y otros archivos desde el servidor a su computadora.

+0

Este es perfecto para mí y más fácil que una opción de línea de comando. –

47
wget \ 
    --recursive \ 
    --no-clobber \ 
    --page-requisites \ 
    --html-extension \ 
    --convert-links \ 
    --restrict-file-names=windows \ 
    --domains website.org \ 
    --no-parent \ 
     www.website.com 

Más información sobre él here.

+1

wget no le gusta 'convert-links' y' no-clobber' usados ​​juntos. Ignorará el 'no-clobber' en ese caso. – BryanH

+1

Si desea raspar un sitio con etiquetas HTML5 como audio o video, debe usar la última versión de wget. El soporte para aquellos fue agregado en algún momento en 2012-2013. Acabo de compilar lo último de su repositorio de Git y obtuve el sitio web que necesitaba, completo con los archivos de video. –

+2

¿Debe '--domains' tener el mismo argumento que el nombre del sitio que se va a raspar (en este caso' website.com', no '.org')? – user151841

0

La mejor manera es rasparlo con wget según lo sugerido en la respuesta de @Abhijeet Rastogi. Si no estás familiarizado con Blackwidow entonces es un rascador decente. Lo he usado en el pasado. http://www.sbl.net/

2

wget -r --no-parent http://www.website.com

@shadyabhi respuestas 's sólo me dieron el index.html

28

Ninguna de las anteriores obtuvo exactamente lo que necesitaba (todo el sitio y todos los activos). Esto funcionó sin embargo.

Primero, siga this tutorial para obtener wget en OSX.

A continuación, ejecute este

wget --recursive --html-extension --page-requisites --convert-links http://website.com 
+2

Agregue --no padre si solo desea desde una url y sus subdominios – magnudae

+0

Asegúrese de incluir el www. si el sitio fuerza a www. de lo contrario, no descargará nada. –

12

Sé que esto es muy antiguo y que sólo quería poner mis 2 centavos en

wget -m -k -K -E -l 7 -t 6 -w 5 http://www.website.com

Una pequeña aclaración con respecto a cada uno de los interruptores:.

-m Esencialmente, esto significa "duplicar el sitio", y recursivamente toma las páginas & imágenes mientras arañas a través del sitio. Comprueba la marca de tiempo, por lo que si ejecuta wget por segunda vez con este modificador, solo actualizará los archivos/páginas que sean más nuevos que la hora anterior.

-k Esto modificará los enlaces en el html para que apunten a los archivos locales. Si en lugar de usar cosas como page2.html como enlaces en todo su sitio, realmente estaba usando un http://www.website.com/page2.html completo, probablemente necesite/desee esto. Lo enciendo solo para estar seguro - hay posibilidades de que al menos 1 enlace cause un problema de lo contrario.

-K La opción de arriba (k minúscula) edita el html. Si también desea la versión "intacta", use este interruptor y guardará tanto la versión modificada como la original. Es una buena práctica en caso de que algo esté mal y quiera comparar ambas versiones.Siempre puede eliminar el que no quería más tarde.

-E Esto guarda HTML & CSS con "extensiones apropiadas". Cuidado con este: si su sitio no tiene extensiones .html en cada página, esto lo agregará. Sin embargo, si su sitio ya tiene todos los archivos nombrados con algo como ".htm", ahora terminará con ".htm.html".

-l 7 De manera predeterminada, la -m que usamos anteriormente se repetirá/araña a través de todo el sitio. Por lo general, eso está bien. Pero a veces tu sitio tendrá un ciclo infinito, en cuyo caso wget se descargará para siempre. Piense en el típico ejemplo website.com/products/jellybeans/sort-by-/name/price/name/price/name/price. Es algo raro hoy en día: la mayoría de los sitios se comportan bien y no lo harán, pero para estar seguros, averigüe la mayor cantidad posible de clics para llegar a cualquier parte de la página principal y acceder a cualquier página real en el sitio web. es un poco (sería desagradable si utilizó un valor de 7 y descubrió una hora más tarde que su sitio tenía 8 niveles de profundidad) y usa ese #. Por supuesto, si sabe que su sitio tiene una estructura que se comportará, no hay nada de malo en omitir esto y tener la tranquilidad de saber que en realidad se encontró la 1 página oculta en su sitio que tenía 50 niveles de profundidad.

-t 6 Si se produce un error al intentar acceder/descargar una determinada página o archivo, esto establece el número de reintentos antes de que abandone ese archivo y continúe. Por lo general, lo quiere eventualmente darse por vencido (configúrelo en 0 si desea que lo intente siempre), pero tampoco desea que se rinda si el sitio simplemente se estaba abandonando durante uno o dos segundos. Encuentro 6 para ser razonable.

-w 5 Esto le indica a wget que espere unos segundos (5 segundos en este caso) antes de tomar el siguiente archivo. A menudo es fundamental usar algo aquí (al menos 1 segundo). Dejame explicar. De manera predeterminada, wget capturará las páginas lo más rápido posible. Esto puede ser fácilmente solicitudes múltiples por segundo, que tiene el potencial de poner una carga enorme en el servidor (particularmente si el sitio está escrito en PHP, hace que MySQL tenga acceso a cada solicitud y no utiliza una memoria caché). Si el sitio web está en hosting compartido, esa carga puede hacer que alguien sea expulsado de su host. Incluso en un VPS puede hacer que algunos sitios se pongan de rodillas. E incluso si el sitio en sí mismo sobrevive, ser bombardeado con una gran cantidad de solicitudes en unos pocos segundos puede parecer un ataque de DOS que podría bloquear tu IP. Si no está seguro de que el sitio pueda manejar una afluencia masiva de tráfico, use el -w # switch.5 por lo general es bastante seguro. Incluso 1 probablemente esté bien la mayor parte del tiempo. Pero usa algo

+0

Gracias por todas las explicaciones, ¡excelente respuesta! – mdomino