¿Cómo descargar todos los archivos (pero no HTML) de un sitio web usando wget?

162

¿Cómo usar wgety obtener todos los archivos del sitio web?

Necesito todos los archivos excepto los archivos de la página web como HTML, PHP, ASP, etc.

Aniruddhsinh
fuente
Incluso si desea descargar php, no es posible usar wget. Solo podemos obtener HTML sin formato con wget. Supongo que sabes la razón
Venkateshwaran Selvaraj
NB: siempre verifique wget --spiderprimero y siempre agregue -w 1(o más -w 5) para no inundar el servidor de la otra persona.
isomorphismes
1
¿Cómo puedo descargar todos los archivos pdf en esta página? pualib.com/collection/pua-titles-a.html
Stack Overflow es un sitio para preguntas de programación y desarrollo. Esta pregunta parece estar fuera de tema porque no se trata de programación o desarrollo. Consulte los temas sobre los que puedo preguntar aquí en el Centro de ayuda. Quizás Super User o Unix & Linux Stack Exchange sería un mejor lugar para preguntar. Consulte también ¿Dónde publico preguntas sobre Dev Ops?
jww

Respuestas:

262

Para filtrar extensiones de archivo específicas:

wget -A pdf,jpg -m -p -E -k -K -np http://site/path/

O, si prefiere nombres largos de opciones:

wget --accept pdf,jpg --mirror --page-requisites --adjust-extension --convert-links --backup-converted --no-parent http://site/path/

Esto reflejará el sitio, pero los archivos sin extensión jpgo pdfse eliminarán automáticamente.

Zsolt Botykai
fuente
17
Si solo desea descargar archivos sin arquitectura de directorios completa, puede usar la opción -nd .
diabloneo
44
¿Qué significan cada una de las banderas?
Jürgen Paul
Creo que distingue entre --acceptmayúsculas y minúsculas, por lo que tendrías que hacerlo--accept pdf,jpg,PDF,JPG
Flimm
8
no estoy seguro si esto es con una nueva versión de wgetpero tiene que especificar un --progresstipo, por ejemplo--progress=dot
jamis
@Flimm también puede usar la --ignore-casebandera para que no se distinga entre --acceptmayúsculas y minúsculas.
Duro
84

Esto descargó todo el sitio web para mí:

wget --no-clobber --convert-links --random-wait -r -p -E -e robots=off -U mozilla http://site/path/
izilotti
fuente
20
+1 para -e robots=off! ¡Esto finalmente solucionó mi problema! :) Gracias
NHDaly
12
La --random-waitopción es genio;)
poitroae
2
@izilotti ¿Puede el propietario del sitio averiguar si WGET sus archivos del sitio con este método?
Elias7
1
@whatIsperfect Definitivamente es posible.
Jack
1
@JackNicholsonn ¿Cómo sabrá el propietario del sitio? El agente utilizado fue Mozilla, lo que significa que todos los encabezados entrarán como un navegador Mozilla, por lo que no sería posible detectar wget como se usa. Por favor corrija si me equivoco. gracias
KhoPhi
63
wget -m -p -E -k -K -np http://site/path/

La página man le dirá qué hacen esas opciones.

wgetsolo seguirá enlaces, si no hay un enlace a un archivo desde la página de índice, entonces wgetno sabrá acerca de su existencia y, por lo tanto, no lo descargará. es decir. ayuda si todos los archivos están vinculados en páginas web o en índices de directorio.

Jesse
fuente
Gracias por responder :) Copia todo el sitio y solo necesito archivos (es decir, txt, pdf, imagen, etc.) en el sitio web
Aniruddhsinh
25

Intenté descargar archivos zip vinculados desde la página de temas de Omeka, tarea bastante similar. Esto funcionó para mí:

wget -A zip -r -l 1 -nd http://omeka.org/add-ons/themes/
  • -A: solo acepta archivos zip
  • -r: recurse
  • -l 1: un nivel profundo (es decir, solo archivos directamente vinculados desde esta página)
  • -nd: no cree una estructura de directorio, simplemente descargue todos los archivos en este directorio.

Todas las respuestas con -k, -K, -Eetc. opciones probablemente no han entendido realmente la cuestión, como los que para volver a escribir las páginas HTML para hacer una estructura local, cambiar el nombre de .phparchivos y así sucesivamente. Irrelevante.

Para obtener literalmente todos los archivos excepto .html etc.

wget -R html,htm,php,asp,jsp,js,py,css -r -l 1 -nd http://yoursite.com
Steve Bennett
fuente
2
-Aes sensible a mayúsculas y minúsculas, creo, así que tendrías que hacerlo-A zip,ZIP
Flimm
7

Puedes probar:

wget --user-agent=Mozilla --content-disposition --mirror --convert-links -E -K -p http://example.com/

También puedes agregar:

-A pdf,ps,djvu,tex,doc,docx,xls,xlsx,gz,ppt,mp4,avi,zip,rar

aceptar las extensiones específicas o rechazar solo extensiones específicas:

-R html,htm,asp,php

o para excluir las áreas específicas:

-X "search*,forum*"

Si los archivos son ignorados por los robots (por ejemplo, los motores de búsqueda), debe agregar también: -e robots=off

kenorb
fuente
5

Prueba esto. Siempre funciona para mi

wget --mirror -p --convert-links -P ./LOCAL-DIR WEBSITE-URL
Suneel Kumar
fuente
5
wget -m -A * -pk -e robots=off www.mysite.com/

esto descargará todo tipo de archivos localmente y los señalará desde el archivo html e ignorará el archivo de robots

Abdalla Mohamed Aly Ibrahim
fuente
2

En los sistemas Windows para obtener wget puede

  1. descargar Cygwin
  2. descargar GnuWin32
ebinx
fuente