Rasgue un sitio web a través de HTTP para descargar imágenes, HTML y CSS

22

Necesito extraer un sitio a través de HTTP. Necesito descargar las imágenes, HTML, CSS y JavaScript, así como organizarlo en un sistema de archivos.

¿Alguien sabe como hacer esto?

damon
fuente
2
Debe mencionar que no va a utilizar este software por infracción de derechos de autor. De lo contrario, asumimos que desea reflejar el contenido de otra persona para que pueda ganar dinero con él.
belgariontheking
Una vez tuvimos un cliente que quería irse, pero tomó la versión HTML estática de su sitio, abandonando el CMS. Usé HTTrack para generar el sitio estático. Funciona bien en Windows y Ubuntu.
TRiG
44
@belgariontheking: Interesante, asumes lo peor. También utilizamos WinHTTrack para descargar una versión HTML estática de nuestro propio sitio web dinámico.
Umber Ferrule

Respuestas:

40
wget -erobots=off --no-parent --wait=3 --limit-rate=20K -r -p -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -A htm,html,css,js,json,gif,jpeg,jpg,bmp http://example.com

Esto se ejecuta en la consola.

esto capturará un sitio, esperará 3 segundos entre solicitudes, limitará la velocidad de descarga para que no mate el sitio y se enmascarará de una manera que parezca ser solo un navegador para que el sitio no lo corte utilizando un mecanismo anti-sanguijuela.

Tenga en cuenta el -Aparámetro que indica una lista de los tipos de archivo que desea descargar.

También puede usar otra etiqueta -D domain1.com,domain2.compara indicar una serie de dominios que desea descargar si tienen otro servidor o lo que sea para alojar diferentes tipos de archivos. No hay una forma segura de automatizar eso para todos los casos, si no obtiene los archivos.

wgetnormalmente está preinstalado en Linux, pero puede compilarse trivialmente para otros sistemas Unix o descargarse fácilmente para Windows: GNUwin32 WGET

Use esto para bien y no para mal.

DesarrolladoresDesarrolladoresDesarrolladores
fuente
1
wget -erobots = off --no-parent --wait = 3 --limit-rate = 50K -r -p -U "Mozilla / 4.0 (compatible; MSIE 7.0; Windows NT 5.1)" -k - prefijo-directorio "C: \ rip" - requisitos de la página -A htm, aspx, php, jsp, asp, zip, png, html, css, js, json, gif, jpeg, jpg, bmp domain.com
Chris S
¿Funcionaría esto en "Vanity URLs"? Estoy preocupado por mi contenido (OK, canciones) escrito en un sitio de redes sociales, y quiero hacer una copia de seguridad local. El sitio es "www.example.com" pero hay una URL personalizada con mi nombre de usuario "avi.example.com". ¡No quiero descargar todo el sitio, solo mi contenido!
Avi el
En Linux, es posible que desee instalar wget desde las fuentes. La versión de Ubuntu, por ejemplo, no analiza CSS mientras que wget ascendente sí.
RDA
16

Buena solución gratuita: HTTrack

HTTrack es un navegador gratuito (GPL, software libre / gratuito) y fácil de usar.

Le permite descargar un sitio de la World Wide Web de Internet a un directorio local, creando recursivamente todos los directorios, obteniendo HTML, imágenes y otros archivos del servidor a su computadora. HTTrack organiza la estructura de enlaces relativa del sitio original. Simplemente abra una página del sitio web "reflejado" en su navegador, y puede navegar por el sitio de un enlace a otro, como si lo estuviera viendo en línea. HTTrack también puede actualizar un sitio duplicado existente y reanudar descargas interrumpidas. HTTrack es totalmente configurable y tiene un sistema de ayuda integrado.

slhck
fuente
7

En los sistemas Linux, 'wget' hace esto, más o menos.

También se ha portado a varias otras plataformas, como mencionan varias de las otras respuestas.

GWLlosa
fuente
Dado que es Linux, probablemente crearía una máquina virtual Ubuntu, ejecutaría wget y transferiría los archivos a mi computadora host. Parece que eso sería más rápido que portar a Windows. :) (De acuerdo, portar a Windows es probablemente un buen ejercicio de todos modos)
JMD
Ejecuto Debian en mi máquina. ¿Puedo decirle a wget que recupere los subdirectores / javascript / css / images asociados dándole solo el dominio raíz http?
damon
# Descargue todo el contenido de example.com wget -r -l 0 example.com
Sí ... o use el puerto nativo de Windows, o use Cygwin ...
Tmdean
2

Obviamente, WGet ha sido mencionado varias veces. La mejor interfaz de usuario que he encontrado es

Hay otras interfaces de usuario para WGet, algunas de las cuales son candidatas para la peor pregunta de interfaz de usuario

Chris S
fuente
1

Mira la extensión Scrapbook para firefox. Hace un trabajo increíble en esto y también se integra con firebug y le permite eliminar elementos del DOM antes de guardar si lo desea.

GBa
fuente
1

Debe usar wget, que está disponible para la mayoría de las plataformas. curl no solicitará documentos de forma recursiva, que es una de las principales fortalezas de wget.

Linux: (generalmente incluido en la distribución) http://www.gnu.org/software/wget/
Windows: http://gnuwin32.sourceforge.net/packages/wget.htm
Mac: http: //www.geekology. co.za/blog/2009/02/macports-compile-and-install-open-source-software-on-mac-os-x/

POR FAVOR, asegúrese de no estar afectando el sitio web: configure demoras adecuadas entre las solicitudes y asegúrese de que esté dentro de los términos de servicio del sitio.

-Adán

Adam Davis
fuente
en realidad, es nuestros servidores que estaríamos martillando. el sitio se genera dinámicamente a través de PHP y el CMS / DB fue algo destrozado Es una historia complicada, soy el desarrollador que acaba de llegar. pero estamos construyendo todo en django ahora, así que no debes preocuparte.
damon
1

En realidad, siguiendo mi comentario en la publicación de GWLlosa, acabo de recordar que tengo instalado GnuWin32 y, efectivamente, contiene un puerto de Windows de wget.

http://sourceforge.net/projects/gnuwin32/

GnuWin32 provides Win32-versions of GNU tools,
or tools with a similar open source licence.
The ports are native ports, that is they rely
only on libraries provided with any 32-bits
MS-Windows operating system, such as
MS-Windows 95 / 98 / 2000 / NT / XP
JMD
fuente
1

Utilicé esto hace algunos años y funcionó bien. Solo Windows Solía ​​ser adware pero ya no, aparentemente:

http://www.webreaper.net/

Odilon Redo
fuente
1

wget --random-wait -r -p -e robots=off -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" --limit-rate=20k -b http://www.example.com

  • -p : el parámetro le dice a wget que incluya todos los archivos, incluidas las imágenes.
  • -e robots=off : ignorar las reglas de los sitios robots.txt
  • -U "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)" : cadena de agente de usuario
  • --random-wait : evitar ser incluido en la lista negra
  • --limit-rate=20k : limita la velocidad a la que descarga archivos.
  • -b : continúa wget después de cerrar sesión.
davidcondrey
fuente
Estos son los parámetros que uso. También agrego -c(o --continue) la opción cuando las cosas salen mal y tengo que reiniciar el proceso.
kub1x