Descarga de páginas web con wget

A partir de este mes, estaré inmerso en un trabajo de investigación y desarrollo para obtener mi título de «suficiencia investigadora». Más adelante comentaré en detalle cuál es el objetivo y en qué consiste este trabajo, pero durante una temporada, escribiré aquí sobre distintas herramientas open-source que integraré en la herramienta final que quiero conseguir como «prueba de concepto». Una de las herramientas en las que me basaré es el conocido GNU Wget, una utilidad para la descarga no-interactiva de ficheros web. Soporta los protocolos http, https y ftp, así como el uso de proxys http.

Veamos algunas de las más importantes opciones de este versátil comando:

-r Descarga recursiva. Sin más parámetros se seguirán todos los enlaces para descargar de forma masiva todo un site.
-l # : Profundidad de descarga # (cuántos niveles de enlaces se deben seguir)
-x : crear estructura de directorios en el disco duro mapeando la estructura de carpetas del servidor web
-np: (no-parent) al descargar de forma recursiva, no seguir los enlaces que lleven a niveles superiores al inicial en la estructura de carpetas
– N : time-stamping. Esta opción es una de las más importantes si tu intención es descargar periodicamente cierta web y traerte sólo las actualizaciones ocurridas desde la última descarga. Es decir, con esta opción conseguiremos una actualización incremental, con lo que no sólo se ahorra en ancho de banda, ¡sino también en tiempo! Un fichero se marcará para descarga si se cumple alguna de las siguientes condiciones: 1. no tenemos ya un fichero local con el mismo nombre que el archivo a descargar y 2) existe un fichero con el mismo nmbre, pero el archivo remoto fue modificado más recientemente que el local. Para implementar esas condiciones, debemos de conocer la fecha de última modificación tanto del fichero local como del remoto. Esta información se conoce como time-stamps.

Según la documentación, Wget se fija también en cambios en el tamaño del archivo. En caso de diferencia entre el tamaño local y remoto, se descargará el fichero, independientemente de la fecha del time-stamp.

– P : directorio prefijo, es decir, el directorio local de destino a partir del cual se guardarán todos los ficheros remotos que descarguemos. Por defecto es . (el directorio actual).–cookies=on : activar el uso de cookies. Algunas páginas sólo permiten ser visitadas si nuestro navegador dispone de ciertas cookies (generalmente, estas cookies se instalan en una página inicial de login. A partir de ahí, con el login correcto y las cookies cargadas, podremos visitar/descargar cualquier otra página)

–load-cookies=cookie_file : acompaña a la opción anterior. cookie_file es el nombre del fichero de donde wget leerá las cookies que enviará al servidor en cada petición.

–save-cookies=cookie_file : precede o acompaña a la anterior. Con esta opción, podremos visitar una página y guardar sus cookies (las cookies de la página visitada) en nuestro fichero local cookie_file.

–timeout=# : fija un tiempo de # segundos de espera. Si se cumple ese tiempo sin haber conseguido acceder al fichero web remoto, la conexión se dará por terminada. Es equivalente a especificar –dns-timeout, –connect-timeout, y –read-timeout, con un valor #.

Por defecto, wget fija el valor de –read-timeout a 900 segundos. Si ponemos un timeout de 0, deshabilitaremos todos los valores de espera (de timeout).

-R patrón : indica que no queremos descargar ningún fichero cuyo nombre case con el patrón especificado. Por ejemplo -«R aif,au,avi,class,gif,java,jpg,mid,mov,mp3,mpeg,mpg,png,ram,rm,swf,wmv,zip» evitaría la descarga de los ficheros gráficos, de vídeo y música asociados a una página web que estemos descargando.

-o fichero.log : guarda un log de toda la actividad de GNU Wget en el fichero fichero.log.

En DevArticles.com podemos leer un artículo con ejemplos básicos de utilización de algunas de las opciones mencionadas.

Y si queremos experimentar con todas sus posibles opciones por nosotros mismos, en la Universidad de Cornell han preparado un circuito de páginas con distintas opciones y enlaces, para probar GNU Wget y otros web spider. Que os divirtáis!

Google Summer of Code 2007

Ayer se publicó la lista de organizaciones mentoras candidatas a presentar proyectos open source al Google Summer of Code de este año. Grandes como KDE, GNOME, OpenOffice, Mozilla, Eclipse, Ubuntu, Fedora… y por supuesto proyectos más modestos como ArgoUML , Plone, InkScape o Drupal… forman parte de la lista de organizaciones aprobadas. Comienza ahora el periodo de inscripción de estudiantes, que durará hasta el día 24 de Marzo. A partir de ahí, Google estudiará las candidaturas con ayuda de las organizaciones mentoras y decidirá quiénes (unos 600 estudiantes de todo el mundo) tendrán el honor de participar en este evento durante el verano del 2007. Aquí he dejado un calendario resumen de lo que acontecerá en este SoC’07.

¡Suerte a todos los participantes (en especial a mis alumnos ;-)!

Diseño gráfico de BBDD con MySLQ Workbench

MySQL WorkbenchMySQL WorkBench formaba parte hasta hace bien poco del grupo de aplicaciones gráficas MySQL GUI Tools para gestión del popular servidor de bases de datos. Basado en fabFORCE DBDesigner4, es una aplicación multi-plataforma, desarrollada por la propia empresa MySQL, para poder gestionar/crear/editar/modificar el esquema entidad/relación de una base de datos. También permite la ingeniería inversa (dada una BBDD, extraer el esquema E/R).

Una de las pegas de Workbench (y de DBDesigner) es que es una aplicación bastante (o muy) inestable. Y debido a esa inestabilidad, y a que el equipo de desarrollo se quiso centrar en MySQL Query Browser y MySQL Administrator durante el año 2006, Workbench desapareció de la suite GUI-Tools.

Sin embargo, en un post de este mes en los foros de MySQL, uno de los ingenieros de desarrollo (Michael Zinner) nos indica que durante el 2007, se centrarán y tomarán como producto estrella precisamente Workbench.

Entre las mejoras en las que se emplearán a fondo, destacar :

* Limpieza y refactorización del código actual
* Actualizar el canvas para basarlo en Cairo
* Restructuración de los repositorios Subversion

Por ahora, no hay ningún binario de Workbench disponible, pero es posible descargar el código fuente desde el repositorio Subversion (svn.mysql.com).

Nueva política de comentarios y Hosting

La primera vez que enviéis un comentario, lo tendrá que aprobar alguno de los administradores de DiarioLinux. Además, se pedirá vuestro nombre y email (no os preocupéis, el email es necesario pero no saldrá publicado en la web, sólo es una pequeña medida de seguridad)

A partir de que os aprobemos vuestro primer comentario, todos los demás que enviéis en el futuro serán automáticamente aprobados. No tendréis que esperar a que un moderador os los apruebe, tendréis carta blanca. Son pequeñas mejoras de WordPress que me están gustando.

Respecto a los miles de noticias y artículos que guardamos de nuestra era anterior, siguen en stand-by. Estamos preparando un script de exportación/importación de Tikiwiki a WordPress, y haciendo pruebas en otro servidor, antes de meter la pata! Ídem con los miles de usuarios que ya se habían registrado en DL con anterioridad.

También seguimos buscando un sitio profesional donde alojar DiarioLinux. Si alguna empresa de hosting lee este mensaje, y se anima a patrocinar DiarioLinux (más de 2.000 usuarios únicos diarios – en general, con altos conocimientos de administración de sistemas – , más de 20.000 páginas vistas/día), por favor, que se ponga en contacto mandando un comentario a esta noticia (el comentario no saldrá publicado si no quiere).

A ver si conseguimos que DL no muera de éxito 🙂

Volvemos online, con nueva cara

Llevamos varios días tirados en la cuneta debido a un problema de sobrecarga en el anterior servidor. El último post de la anterior era de DiarioLinux, titulado «Cómo instalar Damn Small Linux en un stick USB» fue Barrapunteado. Eso, unido a que los blog-spammers no paraban de machacar los comentarios, a que Tikiwiki actualmente es un devorador de recursos y a algunos ataques más, han hecho que nuestro anterior proveedor de hosting nos cerrara el grifo (estábamos alojados en una máquina cedida).

Todo ello me ha llevado a instalar el gestor de blogs WordPress como base de nuestra infraestructura de contenidos en DiarioLinux.com. Ahora queda un ingente trabajo para recuperar todo el contenido (artículos, noticias, revistas, comentarios y usuarios) de la versión anterior de DL, crear la sección de revistas (no sé si WP tendrá algo similar para gestionar la BBDD de revistas Linux, si alguien conoce algún plugin para ello, le agradecería que me avisara dejando un comentario) y darle un lavado de cara al tema por defecto.

Pero como decíamos (casi) ayer, estamos online 😉