Como usar WGET para tus descargas bajo linux
 ------------------------------------------------------------------------------
 By NaTaSaB (jmmerlos @ merlos . org http://merlos.org)
 version: 0.8
 Ultima actualización: Ago 2002
 Publicado:  Ago 2002
 
 
 Indice
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Objetivos
 ¿Qué es?
 Ejemplos de Utilización
 Resumen Línea de comandos
 Ficheros de Configuración
 APENDICE 1 - wget --help 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

 Objetivos
 ------------------------------------------------------------------------------
   En este tutorial se pretende inicializar a los usuarios en el manejo del 
  gestor de descargas wget con ejemplos pácticos y de forma clara y sencilla.  
 
   Este texto se distribuye bajo licencia GNU General Public License.

 ¿Qué es?
 ------------------------------------------------------------------------------
  WGET es una completa utilidad GNU para Linux que trabaja en modo textual 
  y que sirve para bajar ficheros usando los protocolos HTTP y FTP.

  Está incluido en todas las distribuciones y también dispone de una
  interfaz gráfica, 'gwget' (http://gwget.sourceforge.net).

   wget está extensamente documentado en su página del manual

		man wget

   En este tutorial se mostrarán algunos ejemplos de como manejar wget como
   gestor de descargas bajo Linux.


  
 Ejemplos de utilización
 ------------------------------------------------------------------------------
  
  wget tiene una versátil y extensa línea de comandos, esto puede hacer que al
  principio nos perdamos, tan sólo hay que memorizar unos cuantos comandos.
 
  Para descargar una página sólo tenemos que poner wget URL:

     $ wget http://localhost/~natasab/

  Si queremos guardar una página al estilo Internet Explorer, esto es, 
  incluyendo imágenes, sonidos, CSS... utilizaremos el argumento -p

    
    $ wget -p  http://localhost/~natasab/
    
  El fichero index.html se encontrará en ./localhost/%7Enatasab/ Esto es porque
  wget crea la jerarquia de directorios dominio/subdirectorios/ficheros
  por defecto. Es decir, si ejecutamos
 
          wget -p  http://www.google.com
  Nos creará el directorio ./www.google.com. Para evitar esto, podemos usar
  los siguientes modificadores: 

  bash-2.05$ wget -p -nH --cut-dirs=1  http://localhost/~natasab/
  ...
  bash-2.05$ ls
  img  index.html  main.css
  bash-2.05$ 

  -nH hace que no se cree el subdirectorio localhost ( o www.google.com) 
  y --cut-dirs=n elimina n número de directorios dentro de la jerarquia,
  en el ejemplo pusimos 1, por tanto no se crea el directorio %7Enatasab.
  
  Veamos, el ejemplo de la página del manual del wget. Supongamos que
  queremos descargar el xemacs que se encuentra en

      ftp://ftp.xemacs.org/pub/xemacs/

  En función de los argumentos que le demos a wget se descargaría según la
  siguiente tabla:

                   No options        - ftp.xemacs.org/pub/xemacs/
                   -nH               - pub/xemacs/
                   -nH --cut-dirs=1  - xemacs/
                   -nH --cut-dirs=2  - .

                   --cut-dirs=1      - ftp.xemacs.org/xemacs/
                   ...
   
  Para descargar todos los ficheros que se encuentran en el directorio 
  pub/xemacs del ftp anterior podemos usar la opción -r o --recursive, esta
  opción funciona de forma similar a las de los  comandos ls o rm.
  Si queremos especificar una profundidad de directorios en la recursividad
  podemos emplear el modificador -l profundidad, por defecto se toma -l 5
  Si se trata de un fichero HTML la profundidad se refiere en cuanto a seguir 
  los enlaces.

   wget -r -nH ftp.xemacs.org/pub/xemacs/


  En algunas páginas (sobre todo de mp3) en lugar de establecer enlaces en el 
  propio fichero HTML ofrecen un fichero con las direcciones URL. Para bajar 
  los recursos contenidos en ese fichero sólo tendremos que utilizar la 
  opción -i

  $ wget -i http://www.servidor.com/cuenta/fichero.con.urls

  Si por el contrario es una página HTML que contiene enlaces a ficheros
  que nos interesa tendremos que forzar a wget a que busque enlaces:

  $ wget -r -l 1  -np -f -i http://www.gnu.org/downloads/emacs.html  

  La opción -np (--no-parent) dice a wget que no descargue ficheros que se
  encuentran en un nivel inferior dentro de la jerarquía de directorios, 
  por ejemplo, no se descargaría http://www.gnu.org/index.html, aunque este
  fuera referenciado dentro de emacs.html

  También puede suceder que el fichero con la lista de URL contenga los
  volumenes de un fichero grande y dado si uno de estos volúmenes no existe
  no nos interese descargar el resto de ficheros, ya que sería una pérdida 
  de tiempo al no poder recuperar el fichero "grande". Para realizar este 
  chequeo podemos utilizar la opción --spider
  Ejemplo: 
  Contenido de 'fichero':
  
	http://localhost/~natasab/img/cp.png
	http://localhost/~natasab/img/cp1.png
	http://localhost/~natasab/img/cp2.png
	http://localhost/~natasab/img/cp3.png
	http://localhost/~natasab/img/cp4.png

  que conforman los volúmenes de un fichero cp.tar.gz, si nos falta alguno de 
  estos volúmenes no podremos recuperar el contenido del zip :-(
  Veamos si hay suerte:

	bash-2.05$ wget -nv --spider -i fichero 
	200 OK
	
	http://localhost/%7Enatasab/img/cp1.png:
	18:18:00 ERROR 404: Not Found.
	http://localhost/%7Enatasab/img/cp2.png:
	18:18:00 ERROR 404: Not Found.
	http://localhost/%7Enatasab/img/cp3.png:
	18:18:00 ERROR 404: Not Found.
	http://localhost/%7Enatasab/img/cp4.png:
	18:18:00 ERROR 404: Not Found.
	bash-2.05$ 

	La opción -nv (--non-verbose) la veremos más adelante, sólo adelantar 
  que sirve para mostrar menos información por stdout.

  Sigamos con nuestras descargas, ahora supongamos que hemos encontrado una 
  página con mucha documentación, almacenada en ficheros con extensión .pdf,
  .zip y .tar.gz. Si sólo queremos bajar ficheros con esa extension.

  $wget -nH -r -A pdf,zip,tar.gz -f -i http://www.linuxdoc.org/howto/

  La nueva opción introducida ha sido -A lista-patrones-separada-por-comas
  Otro ejemplo sería:

  wget -r -A s*.png -np -nH --cut-dir=2 http://localhost/~natasab/img -nv

  Recapitulando las opciones:
  
  -r          modo recursivo
  -A lista-patrones-separada-por-comas   Patron de ficheros que se descargarán
  -np         no descargar directorios de orden inferior.
  -nH         no crear el directorio con el nombre del host
  -cut-dirs=2 no crear 2 niveles de los directorios (~natasab/img)
  -nv         Modo no imformativo (para que muestre menos información)


  Wget genera mucha información en la salida estandar por defecto:

  bash-2.05$ wget http://localhost
   --17:35:09--  http://localhost/
              = `index.html'
   Conectando con localhost:80... ¡Conectado!
   Petición HTTP enviada, esperando respuesta... 302 Found
   Localización: ~natasab [siguiendo]
   --17:35:09--  http://localhost/%7Enatasab
              = `~natasab'
   Conectando con localhost:80... ¡Conectado!
   Petición HTTP enviada, esperando respuesta... 301 Moved Permanently
   Localización: http://192.168.0.3/~natasab/ [siguiendo]
   --17:35:09--  http://192.168.0.3/%7Enatasab/
              = `index.html'
   Conectando con 192.168.0.3:80... ¡Conectado!
   Petición HTTP enviada, esperando respuesta... 200 OK
   Longitud: no especificado [text/html]
   
       0K                                                       
   
   17:35:09 (833.01 KB/s) - `index.html' guardado [853]
   
   bash-2.05$ 

   Vemos la cantidad de información que ha generado y tan sólo se ha
   bajado un fichero de 853 bytes. Tal vez esto no nos interese.
   Básicamente tenemos dos opciones para evitar tanto mensaje:
                -q (modo silencioso)
                -nv (Modo no informativo)

  Veamos los resultados: 

  bash-2.05$ wget -nv http://localhost
  17:38:32 URL:http://192.168.0.3/%7Enatasab/ [853] - "index.html.1" [1]
  bash-2.05$ wget -q http://localhost
  bash-2.05$ ls
  index.html  index.html.1  index.html.2
  bash-2.05$ 

  Como se puede obervar, wget si no se especifica lo contrario si el fichero 
  existe, es decir, se ha bajado ya, crea uno con el mismo nombre y le añade 
  el sufijo .numero. Para que no vuelva a bajar los ficheros puedes usar la 
  opcion -nc

 Resumen de la Linea de comandos
 ----------------------------------------------------------------------------

	En esta sección sólo se verán los comandos más interesantes, para ver
la lista completa vaya al Apéndice 1

  -h,--help 
     Muestra un resumen de los argumentos de la línea de comandos (Apéndice 1)

  -b, --background 
     Ejecuta el wget en segundo plano.

  -o logfile, --output-file=logfile
     Audita los mensajes que van a stderr en un fichero.

  -a logfile, --append-output=logfile
     Añade los mensajes auditados al fichero logfile

  -q, --quiet 
     Modo silencioso. Inhibe la salida.

  -nv, --non-verbose
     Inhibe la salida, excepto los mensajes que van a stderr

  -i file, --input-file=file
     Lee las URLs del fichero file.Notese que ha de ser una lista de URLs, 
     en caso de que sea un fichero HTML hay que usar la opción -F,-force-html
     Si los enlaces del fichero HTML son relativos. emplee la opción 
    --base=url

  -t numero, --tries numero
     Número de reintentos a la hora de descargar un fichero. 0 o inf para
     seleccionar infinitos

  -nc, --no-clobber
     En caso de bajar mismo fichero dos veces si -nc está activado, no se 
     bajará de nuevo, si no está activado, se bajará de nuevo añadiendo
     un sufijo numérico (ej: file.1,file.2..)

  -c, --continue
     Reanuda la descarga de un fichero parcialmente descargado.Si el servidor
     no soporta la reanudación, wget no hace nada si -c está activada, si no lo
     está se bajara el fichero añadiendo el sufijo numérico (file.1)
    
  --spider
     wget se comporta como un web-spider, esto significa que wget sólo compro-
     bará si los enlaces existen.Útil para comprobar los bookmarks, ejemplo:
                   wget --spider --force-html -i bookmarks.html
   
  -w segundos, --wait segundos
     Espera el número de segundos especificados entre dos peticiones. Se puede
     especificar en minutos, horas y dias  añadiendo los sufijos m, h y d
     respectivamente.

  --waitretry=seconds
     Utilice esta opción si sólo desea que haya una espera entre reintentos
     debidos a fallos durante las descargas, se esperan de 1 a los segundos 
     especificados incrementando 1 segundo mas de espera en cada reintento.

  -Q quota, --quota=quota
     Establece un tamaño maximo para las descargas _programadas_, especificado
     en bytes por defecto se pueden usar los sufijos k (kilobytes) o m 
     (Megabytes).

   -nd, --no-directories
     No crea la jerarquía de directorios
   
   -x, --force-directories
     Fuerza la creación de la jerarquía de directorios. Ej:
     wget -x http://fly.srk.fer.hr/robots.txt se guardará en
     fly.srk.fer.hr/robots.txt.

   -nH, --no-host-directories
     Deshabilita la creacion de los directorios prefijados en el host.
   --cut-dirs=number
     Ignora number de subdirectorios.
     Ejemplo: URL ftp://ftp.xemacs.org/pub/xemacs/ 
         No options        - ftp.xemacs.org/pub/xemacs/
         -nH               - pub/xemacs/
         -nH --cut-dirs=1  - xemacs/
         -nH --cut-dirs=2  - .

   -P prefix, --directory-prefix=prefix
     Establece un subdirectorio a partir del cual se descargarán los ficheros.

   -E, --html-extension
     Cuando el tipo de un fichero es text/html se le añade el sufijo .html
     Esto es util para bajar .cgi o .asp y poder verlos de forma local.
     Ej: file.cgi?25  =file.cgi?25.html

   -r, --recursive
     Activa el modo recursivo

   -l profundidad, --level profundidad
     Especifica el nivel de profundidad máximo en el modo recursivo.(Def:5)
  
   --delete-after
     wgets borra el fichero una vez bajado, esto sirve para mantener actuali-
     zadas las páginas de un proxy más visitadas.

   -k, --convert-links
     Convierte los links de una página descargada de forma que si el recurso
     enlazado ha sido descargado se accede a el de forma local, si no es 
     descargado wget lo enlaza al recurso original.
  
   -K. --backup-converted
     Cuando se hace una conversión, se hace una copia de serguridad del 
     original añadiéndosele el sufijo .orig

   -m, --mirror
     Opción para realizar mirrors. Equivale a -r -N -l inf -nr
    
   -p, --page-requisites
     Esta opción hace que wget se baje todos los recursos necesarios
     para una correcta visión del fichero HTML(imágenes,sonidos,CSS...) 
     Descarga las páginas de forma parecida al Internet Explorer. Si la página
     contiene frames, hay que utilizar además las opciones -r -l 1

   -A acclist --accept acclist,
   -R rejlist --reject rejlist,
      Acepta o rechaza listas separadas por comas de nombres de ficheros,
      sufijos o patrones. 
   
   -L, --relative
     Wget sigue sólo los enlaces que sean relativos. Útil cuando se quiere
     descargar sólo los recursos locales dentro del mismo host.

   -np, --no-parent
     No asciende a directorios padres dentro de la jerarquía cuando se 
     descarga de forma recursica. Util cuando se quiere descargar a partir
     de un cierto nivel. ej: URL http://www.gnu.org/downloads/
     si en downloads/index.html se hiciera referencia a ../index.html, 
     no se descargaría ese fichero html.
     
   

 Ficheros de Configuración
 ------------------------------------------------------------------------------


  Los ficheros de configuración sirven para personalizar algunas opciones 
  del wget de forma que no necesitemos introducirlas por línea de
  comandos.

   ~/.wgetrc             = Configuración personal de un usuario
   /usr/local/etc/wgetrc = Configuración Global
   /etc/wgetrc           = Configuración Global 
	   	      	    (en algunas distribuciones)

  Lo usual, si eres un usuario normal, es que copies el fichero de configura-
  ción global a tu directorio home y lo edites completandolo con tus 
  preferencias 
  Algunas opciones interesantes que podemos encontrar:

  # Numero de reintentos a la hora de descargar un fichero. 
  tries = 20
  # Profundidad máxima en modo recursivo
  reclevel = 5
  # tiempo de espera entre intentos (incremento lineal, espera 
  # 1s primer intento,2s segundo intento ... )
  waitretry = 10
  # añadir cabeceras http ej:
  header = From: tu nombre 
  header = Accept-Language: es
  # Crear estructura de directorios aun obteniendo un único fichero.
  dirstrcut= off
  # Modo recursivo de forma automática
  recursive = off
  # Crear un backup de los ficheros a los que se les aplica conversion (-k)
  # Equivale a activar -K
  backup_converted= off
  # Seguir por defecto los enlaces a ftps en ficheros HTML
  follow_ftp = off

 APENDICE 1
 ------------------------------------------------------------------------------

 Resumen Linea de Comandos ( obtenida via wget --help)
  GNU Wget 1.7, un recuperador por red no interactivo.
  Modo de empleo: wget [OPCIÓN]... [URL]...

Los argumentos obligatorios para las opciones largas son también obligatorios
para las opciones cortas.

Inicio:
  -V,  --version           muestra la versión de wget y termina.
  -h,  --help              muestra esta ayuda.
  -b,  --background        pasa a segundo plano al iniciar.
  -e,  --execute=ORDEN     ejecuta una orden como las de `.wgetrc'.

Fichero de entrada y registro:
  -o, --output-file=FICHERO   registra los mensajes en FICHERO.
  -a, --append-output=FICHERO añade los mensajes a FICHERO.
  -d, --debug                 imprime la salida de depurado.
  -q, --quiet                 modo silencioso (no muestra ninguna salida).
  -v, --verbose               modo informativo (predeterminado).
  -nv, --non-verbose          muestra el mínimo necesario de información.
  -i, --input-file=FICHERO    descarga las URLs que haya en FICHERO.
  -F, --force-html            trata el fichero de entrada como HTML.
  -B,  --base=URL             añade URL delante de los enlaces relativos
                              en el fichero -F -i.
       --sslcertfile=FICHERO  certificado opcional del cliente.
       --sslcertkey=FICHERO   llave opcional para este certificado.
Descarga:
       --bind-address=DIRECCIÓN   realiza un `bind' a la DIRECCIÓN 
                                  (máquina o IP)
                                  en la máquina local.
  -t,  --tries=NÚMERO             establece en NÚMERO el número de reintentos
                                  (0 no pone límite).
  -O,  --output-document=FICHERO  escribe los documentos en FICHERO.
  -nc, --no-clobber               no sobreescribe ficheros existentes.
  -c,  --continue                 continuar recuperando un fichero existente.
       --dot-style=ESTILO         establece el estilo de la pantalla de
                                  recuperación.
  -N,  --timestamping             no recupera ficheros más viejos que los
                                  locales .
  -S,  --server-response          imprime la respuesta del servidor.
       --spider                   no recupera nada.
  -T,  --timeout=SEGUNDOS         establece el tiempo de espera de lectura
                                  en SEGUNDOS.
  -w,  --wait=SEGUNDOS            espera SEGUNDOS entre recuperaciones.
       --waitretry=SEGUNDOS     espera 1...SEGUNDOS entre reintentos.
  -Y,  --proxy=on/off             habilita/deshabilita el uso de proxies.
  -Q,  --quota=NÚMERO             establece la cuota de recuperación en NÚMERO.

Directorios:
  -nd  --no-directories            no crea directorios.
  -x   --force-directories         fuerza la creación de directorios.
  -nH, --no-host-directories       no crea directorios en el anfitrión
  -P,  --directory-prefix=PREFIJO  guarda ficheros en PREFIJO/...
       --cut-dirs=NÚMERO           descarta NÚMERO componentes del directorio
                                   remoto.

Opciones de HTTP:
       --http-user=USUARIO   establece que el usuario de http es USUARIO.
       --http-passwd=CLAVE   utiliza CLAVE como contraseña de http.
  -C,  --cache=on/off        (des)habilita la caché del servidor de datos.
                             (normalmente habilitada).
  -E,  --html-extension      guarda todos los ficheros de texto/html con la 
                             extensión .html.
       --ignore-length       pasa por alto el campo `Content-Length' de la 
                             cabecera.
       --header=TEXTO        inserta el TEXTO entre las cabeceras.
       --proxy-user=USUARIO  establece que el usuario del proxy es USUARIO.
       --proxy-passwd=CLAVE  utiliza CLAVE como contraseña del proxy.
       --referer=URL         incluye la cabecera `Referer: URL' en la petición
                             HTTP.
  -s,  --save-headers        guarda las cabeceras de HTTP en un fichero.
  -U,  --user-agent=AGENTE   wget se identifica como AGENTE en vez de 
                             Wget/VERSIÓN.
       --no-http-keep-alive  deshabilita las conexiones persistentes de HTTP.
       --cookies=off         no utiliza cookies.
       --load-cookies=FICH.  carga las cookies desde FICH. antes de la sesión.
       --save-cookies=FICH.  guarda las cookies en FICH. tras la sesión.

Opciones de FTP:
  -nr, --dont-remove-listing   no elimina los ficheros `.listing'.
  -g,  --glob=on/off     habilita/deshabilita el uso de comodines en ficheros.
       --passive-ftp     usa el método de trasferencia "pasivo".
       --retr-symlinks   al descender por los directorios, recupera los 
                         ficheros a los que apunta un enlace 
                         (no los directorios).

Recuperación recursiva:
  -r,  --recursive        succionado de web recursivo, ¡utilícelo con cuidado!
  -l,  --level=NÚMERO     profundidad máxima de recursión (0=ilimitada)
       --delete-after     borra los ficheros locales una vez descargados.
  -k,  --convert-links    convierte los enlaces no relativos en relativos.
  -K,  --backup-converted antes de transformar el fichero X, hace una copia 
                          X.orig.
  -m,  --mirror           atajo equivalente a -r -N -l inf -nr.
  -p,  --page-requisites  descarga todas las imágenes, etc. necesarias para 
                          mostrar la página HTML.

Aceptar/rechazar recursivo:
  -A, --accept=LISTA      lista, separada por comas, de extensiones aceptadas.
  -R, --reject=LISTA      lista, separada por comas, de extensiones rechazadas.
  -D, --domains=LISTA     lista, separada por comas, de dominios aceptados.
      --exclude-domains=LISTA    lista de dominios rechazados, separados
                                 por comas.
      --follow-ftp               sigue enlaces a FTP desde documentos HTML.
       --follow-tags=LISTA       lista de etiquetas HTML a las que se sigue.
  -G,  --ignore-tags=LISTA       lista de etiquetas HTML a las que se ignorará.
  -H, --span-hosts               ir a anfitriones distintos en la recursión.
  -L, --relative                 sigue sólo enlaces relativos.
  -I, --include-directories=LISTA  lista de directorios permitidos.
  -X, --exclude-directories=LISTA  lista de directorios excluidos.
  -nh, --no-host-lookup             no busca el nombre DNS de los anfitriones.
  -np, --no-parent                  no asciende al directorio padre.

Envíe información sobre errores y sugerencias a .


-------------------------------------------------------------------------------
                               - EOF -
                   Escrito por NaTaSaB con jed & emacs
                            ---===@===---
-------------------------------------------------------------------------------