lunes, 2 de febrero de 2015

[Parte 8] Web Scraping

Programar tus web scrapers

Correr tu web scraping en funcionamiento de intervalos regulares

Hasta ahora hemos ejecutado todas las tareas de web scraping manualmente. Sin embargo, el poder real de los raspadores webs viene cuando se ejecutan en algunos intervalos predefinidos. Esto permite automatizar todas las tareas de raspado sin ninguna intervencion humana. Esto puede ser util cuando se necesita raspar uan pagina web, cuyo contenido cambia de forma regular - tales como los precios de productos, noticias, imagenes, etc. 
Por lo general prefiero programar en un servidor remoto para realizar tareas de raspado - por lo general mi blog, o cualquier otro dominio que tengo mas que mi pagina local. Esto asegura que la programacion de mi scraper no se detendra debido a la caida del servidor local o algun corte de energia accidental.
Ademas el funcionamiento de un scraper en su maquina local significa que usted tendra que tener corriendo su PC las 24 horas del dia los 7 dias de la semana.

Casi todos los proveedores de hosting ofrecen una instalacion CRON que se puede usar para programar una secuencia de comandos que se ejecute en intervalos regulares en el servidor. Establecer una tarea CRON usualmente implica que el usuario defina una configuracion la programacion en el archivo crobtab del servidor. Este es el archivo principal en donde los diversos detalles de las tareas programadas se almacenan. Cada linea de un archivo crontab representa una trabajo, y se compone de una expresion CRON, seguido de un comando a ejecutar.

Una expresion CRON es una cadena formada por cinco o seis campos separados por espacios en blanco que representa el tiempo a establecer. Normalmente como un calendario para ejecutar algun comando o script. La expresion crontab se muestra a continuacion con los detalles de cada campo.

MIN HOUR DOM MON DOW CMD

Nombre corto      Nombre del campo         Valores permitidos
MIN               Minutes (Minutos)               0-59
HOUR              Hours (Horas)                   0-23
DOM               Day of Month (Dia del mes)      1-31
MON               Month (Mes)                     1-12 o JAN-DEC
DOW               Day of Week (Dia de la semana)  0-6 o SUN-SAT
CMD               Command      Comando o script ha ser ejecutado                                                       
Un ejemplo de una entrada crontab para ejecutar un script PHP se muestra a continuacion.

00 11,16 * * * php /home/sameer/www/html/scrape-content.php

En este ejemplo se ejecuta el script PHP especificado a las 11:00 y a las 16:00 todos los dias. El valor separado por comas en un campo especifica que el comando debe ejecutarse en todos los tiempos mencionados. He enumerado a continuacion algunos ejemplos crontab comunes. Observe el uso especial del especificador "*" 

* * * * * <command> #Corre cada minuto
30 * * * * <command> #Corre cada 30 minutos pasando la hora
45 6 * * * <command> #Corre a las 6:45 am cada dia
45 18 * * * <command> #Corre a las 6:45 pm cada dia
00 1 * * 0 <command> #Corre a la 1:00 am cada Domingo
00 1 * * 7 <command> #Corre a la 1:00 am cada Domingo
00 1 * * Sun <command> #Corre a la 1:00 am cada Domingo
30 8 1 * * <command> #Corre a las 8:30 am el primer dia de cada mes
00 0-23/2 02 07 * <command> #Corre cada 2 horas el 2 de Julio


Francamente, el establecimiento de una tarea cron puede ser confusa para muchos usuarios. Afortunadamente la mayoria de los proveedores de hosting ofrecen una manera facil de configurar tareas cron utilizando valores predefinidos. Un ejemplo del planificador CRON en cPanel se muestra a continuacion. Esto muestra la seccion de configuracion por defecto para añadir una nueva tarea cron. 



Puede configurar rapidamente con los valores que se muestran arriba en la imagen, o simplemente modificar cada minuto, hora, dia del mes, mes, dia de la semana. 

Asegurarse de que cron job esta activo

Software, por su propia naturaleza, es propenso al fracaso, y su script no es diferente. Usted necesita asegurarse de que cron job se ejecuta regularmente y no se ha detenido por algunos errores imprevistos. Yo suelo añadir unas lineas debajo del codigo del script de web scraping, que me envia un correo electronico cada vez que el codigo se ejecuta con exito. Esto asegura que si cron job falla por alguna razon voy a llegar a saber debido a la ausencia de un correo electronico. Tambien otra ventaja de utilizar un correo electronico es que se puede enviar otros detalles de la ultima ejecucion de cron con el correo electronico - como resumen de los datos de raspado, la duracion de ejecucion de la ultima ejecucion de cron, etc.
 

No hay comentarios:

Publicar un comentario en la entrada