Manual CSV Robot v1.0 - Rev A

82
Pagina 1 CSV Robot Software de procesamiento de archivos CSV y Web Scraping Manual v1.0 Programado por Marcos M. Correas MMCSoft [email protected] Rev. A – Noviembre 2012 Córdoba - Argentina

description

Manual CSV Robot

Transcript of Manual CSV Robot v1.0 - Rev A

  • Pagina 1

    CSV Robot

    Software de procesamiento de archivos CSV y Web Scraping

    Manual v1.0

    Programado por Marcos M. Correas

    MMCSoft [email protected]

    Rev. A Noviembre 2012 Crdoba - Argentina

  • Manual CSV Robot v1.0 - Rev A

    Pagina 2

    INDICE 1. Introduccin a CSV Robot 4 1.1 Que son los archivos CSV? . 4 1.2 Formato de los archivos CSV . 4 1.3 A quien est dirigido CSV Robot? .. 7 2. Como funciona CSV Robot? . 8 2.1 El archivo Script ... 10 2.2 Comentarios . 11 2.3 Parmetros ... 12 2.4 La seccin .. 12 2.5 Ejemplos de secciones .. 13 2.6 La seccin . 14 2.7 Segunda aproximacin al funcionamiento de CSV Robot .. 14 2.8 La lgica de ejecucin de CSV Robot .. 17 3. La interfaz grfica de CSV Robot . 19 4. Los procesos de CSV Robot ... 21 4.1 Proceso SETEAR_VALOR_COLUMNA . 22 4.1.1 Direccionamiento de variables .. 23 4.1.2 Ejemplo 1 Conversin de formatos CSV . 25 4.1.3 Ejemplo 2 Cambio de nombres de columnas ... 26 4.1.4 Ejemplo 3 Combinar dos archivos CSV en uno ... 28 4.2 Proceso EXTRAER_TEXTO_DESDE_TEXTO ... 30 4.2.1 Ejemplo 4 Extraccin de texto ... 32 4.2.2 Optimizacin del script .... 33 4.3 Proceso REEMPLAZAR_TEXTO_EN_TEXTO .. 35 4.3.1 Ejemplo 5 Reemplazo de texto ... 35 4.4 Proceso QUITAR_COLUMNA ... 38 5. Procesos orientados al Web Scraping ... 39 5.1 Que es el Web Scraping? .... 39 5.1 Proceso DESCARGAR_HTML .. 39 5.1.1 Ejemplo 6 Extraccin de informacin de una tienda online ... 39 5.1.2 Anlisis de la estructura de la pgina .... 40 5.1.3 El ejemplo paso a paso: El archivo de entrada Links.txt . 41 5.1.4 El ejemplo paso a paso: El archivo Script.txt . 41 5.2 Proceso CREAR_DIRECTORIO .... 49 5.2.1 Ejemplo 7 Creacin de directorios .. 49 5.3 Proceso CREAR_ARCHIVO .. 50 5.3.1 Ejemplo 8 Creacin de archivos .... 50

  • Manual CSV Robot v1.0 - Rev A

    Pagina 3

    5.4 Proceso DESCARGAR_ARCHIVO .... 55 5.4.1 Ejemplo 9 Descarga de archivos .... 55 6. Procesos Avanzados ... 60 6.1 Proceso EXTRAER_ARRAY_DESDE_TEXTO ...... 60 6.1.1 Que es un ARRAY? . 62 6.1.2 Como se emplean los ARRAYS en CSV Robot? . 62 6.1.3 Volviendo a la extraccin . 63 6.1.4 Ejemplo 10 Extraer Array de links . 65 6.2 Proceso EXTRAER_ARRAY_DESDE_ARRAY ...... 70 6.2.1 Ejemplo 11 Extraer Array desde Array . 71 6.3 Proceso DESCARGAR_ARCHIVOS_DESDE_ARRAY ... 76 6.3.1 Ejemplo 12 Descarga de array de archivos .. 76 7. Notas finales de este manual ...... 82 7.1 Versin de demostracin de CSV Robot ...... 82 7.2 Como adquirir la versin completa de CSV Robot? ...... 82 7.3 Contacto con el programador y reporte de errores .... 82

  • Manual CSV Robot v1.0 - Rev A

    Pagina 4

    1. Introduccin a CSV Robot Mi nombre es Marcos M. Correas ([email protected]), de Crdoba, Argentina, y soy el programador de CSV Robot. CSV Robot es un software destinado a automatizar el trabajo con archivos CSV (Valores separados por comas), que incluye funciones de Web Scrapping (recuperacin de informacin de inters en forma automatizada desde pginas web). 1.1 Que son los archivos CSV? El nombre deriva del formato interno del archivo CSV. Tiene su traduccin en Comma Separated Values, o valores separados por comas. Es un formato de almacenamiento de datos muy sencillo pero a la vez muy empleado para proporcionar datos de entrada u obtener datos de salida desde software de todo tipo. 1.2 Formato de los archivos CSV Los archivos CSV son tablas de datos. Los archivos CSV no incluyen ningn tipo de informacin de formato como tipo de letra o color, solo almacenan una tabla, con columnas y filas. Por ejemplo, veamos como se puede emplear un archivo CSV para almacenar una lista de contactos, por ejemplo:

    Nombre Edad Telefono Luis Esteban 31 555-234567 Raul Lopez 28 556-985634 Maria Gomez 41 433-095356

    Si esta tabla de datos se guardara en formato CSV se podra guardar de la siguiente manera: Nombre,Edad,Telefono Luis Esteban,31,555-234567 Raul Lopez,28,556-985634 Maria Gomez,41,433-095356 Por que se dice que se podra guardar de esa manera? Simplemente porque la siguiente tambin es vlida Nombre;Edad;Telefono Luis Esteban;31;555-234567 Raul Lopez;28;556-985634 Maria Gomez;41;433-095356 En el primer ejemplo, los datos se separan empleando el delimitador , mientras que en el segundo ejemplo, los mismos datos se separan empleando ; El formato CSV no es un Standard, en ninguna parte hay una especificacin que indique que delimitador se debe emplear, incluso aunque el nombre indique que son valores separados por comas, se puede emplear cualquier smbolo para separar los valores. Se

  • Manual CSV Robot v1.0 - Rev A

    Pagina 5

    dice que un archivo posee formato CSV cuando cumple una serie de convenciones muy flexibles, y que dependen en gran medida del software que lo emplee. Como no hay un Standard que lo rige, es muy comn que un software (A) que exporte datos en formato CSV emplee un carcter como delimitador, mientras que otro software (B) que permita el ingreso de datos a travs de un archivo CSV requiera otro delimitador distinto, lo que en principio no permitira que (B) aprovechara los datos generados por (A) sin que los mismos pasen antes por un proceso de conversin. Las reglas generales que la gran mayora de los archivos CSV emplean son: 1 - La primera lnea del archivo es la lnea que contiene los nombres de las columnas de la tabla de datos En el ejemplo, el archivo contiene 3 columnas, Nombre, Edad y Telefono Nombre,Edad,Telefono 2 - Cada lnea siguiente del archivo CSV, representa un fila de la tabla. Normalmente, la denominacin correcta es que cada lnea es un REGISTRO de informacin, y cada registro esta formado por una serie de CAMPOS (las columnas) En el ejemplo: Luis Esteban,31,555-234567, Es el registro numero 1 y: Raul Lopez,28,556-985634, Es el registro numero 2 3 - Los campos de cada registro y de los nombres de las columnas se encuentran delimitados por un carcter definido por el software, que sirve de separador para determinar, al momento de leer cada registro, que valor pertenece a cada campo En el primer ejemplo de CSV: Nombre,Edad,Telefono Luis Esteban,31,555-234567 Raul Lopez,28,556-985634 Maria Gomez,41,433-095356 Se emplea un delimitador ,. Entonces, el software, al leer el archivo puede interpretar el comienzo y final de cada campo sobre cada registro, as puede determinar que para el registro nmero 2, El campo Nombre tiene valor Raul Lopez, y el campo Edad tiene valor 28. Volvemos a repetir, no existe un Standard que obligue a emplear un delimitador en particular. En principio, el siguiente ejemplo Nombre?Edad?Telefono Luis Esteban?31?555-234567 Raul Lopez?28?556-985634 Maria Gomez?41?433-095356 Es totalmente vlido como archivo CSV, pero el software que intente recuperar la informacin de este archivo debe conocer que se emplea el carcter ? como

  • Manual CSV Robot v1.0 - Rev A

    Pagina 6

    delimitador de los campos. A pesar que se puede emplear como delimitador cualquier carcter, la mayora de los softwares emplean , o ; como delimitador 4 - Todos los registros del archivo deben contener el mismo nmero de campos, lo siguiente no es vlido: Nombre,Edad,Telefono 31,555-234567 Raul Lopez,28,556-985634,23 En el primer registro, el software detecta 2 campos en el registro, pero la lnea de las columnas indica que hay 3 campos definidos, entonces el software no puede determinar si falta el campo Nombre, o nombre es 31 y falta el campo telefono. De igual forma, al registro 2 le sobra un valor 23, que el software no tiene definido como campo en la lnea de columnas. Normalmente, cuando falta un valor en un registro se escribe de la siguiente manera: Nombre,Edad,Telefono Luis Esteban,,31,555-234567 (1) Raul Lopez,28, (2) ,41,433-095356 (3) Al registro (1) le falta el campo Edad Al registro (2) le falta el campo Telefono Al registro (3) le falta el campo Nombre 5 - Puede ocurrir que algn campo, contenga en su interior, como parte de la informacin til, el mismo carcter que se emplea como delimitador del archivo, por ejemplo: Nombre,Edad,Nota Matematicas,Nota Geografia Luis Esteban,18,8,9,10 Raul Lopez,19,7,5,8,2 Maria Gomez,18,6,3,9 Como hacemos para que el software que lee este archivo CSV interprete para el registro numero 1 que 8,9 es el valor del campo Nota Matematicas y no tome , como delimitador, asignando 8 a Nota Matematicas, 9 a Nota Geografia, y reporte un error porque sobra el valor 10? Para ello, se emplea un segundo carcter definido como agrupador. La funcion de este segundo carcter es agrupar aquellos campos que contienen el carcter delimitador en su interior. Normalmente este carcter son las comillas dobles. Entonces, para denotar que 8,9 es una entidad nica y que no se debe interpretar como 8 y 9, se encierra entre comillas dobles. Entonces, el archivo CSV sera: Luis Esteban,18,8,9,10 Raul Lopez,19,7,5,8,2 Maria Gomez,18,6,3,9

  • Manual CSV Robot v1.0 - Rev A

    Pagina 7

    6 - Como ocurre con el delimitador, puede ocurrir tambin que algn campo, contenga en su interior, como parte de la informacin til, el mismo carcter que se emplea como agrupador del archivo, por ejemplo, un archivo con informacin de libros: Codigo,Nombre,Ubicacion AB001,El rey Arturo, y los caballeros de la mesa redonda,Seccion A AB002,Programacin en C, para torpes,Seccion B Para estos casos, la solucin empleada depende en gran medida del software que manipule los archivos. Algunos simplemente no permiten que los campos incluyan el carcter agrupador, otros, emplean algn tipo de convencin para identificar estos casos, entre las convenciones ms empleadas, por ejemplo: 1 - Si el valor incluye las comillas dobles, anteponer otro carcter de comillas dobles (), es decir, Programacin en C, para torpes, se convierte en Programacin en C, para torpes 2 - Si el valor incluye las comillas dobles, anteponer el carcter barra invertida (\), es decir, Programacin en C, para torpes, se convierte en Programacin en C, para \torpes\. CSV Robot emplea esta convencin. Se puede concluir que un archivo CSV es un formato muy sencillo, que representa simplemente una tabla de datos, que puede ser la entrada de datos a un software, o la salida de datos procesados por un software. El formato CSV es fcilmente interpretable por un ser humano, y a la vez, muy fcil de procesar por un software, pero en la prctica, la sencillez y la falta de un Standard provocan que cada software defina reglas propias, que impiden el intercambio de datos entre distintos softwares. Solucionar este tipo de problemas, y facilitar la interoperatividad entre sistemas es uno de los objetivos de CSV Robot 1.3 A quien est dirigido CSV Robot? Este software est dirigido tanto a aquellos usuarios de algn sistema de software que requiera el ingreso de datos en formato CSV, como a aquellos que obtengan datos desde un software en formato CSV, y necesiten realizar algn procesamiento sobre los archivos. Si bien el formato es muy sencillo de manipular, no hay opciones de software que permitan realizar tareas repetitivas sobre archivos CSV grandes de una manera sencilla. Este software esta principalmente orientado a los propietarios de tiendas online. Las tiendas online proveen funciones de importacin (carga) masiva de productos y generalmente requieren que los datos se carguen en forma de archivos de texto CSV. El formato CSV es muy sencillo de manipular con un simple editor de texto. El problema real surge cuando es necesario hacer una modificacin o procesamiento repetitivo sobre un campo de un archivo que contiene cientos o miles de registros.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 8

    2. Como funciona CSV Robot? CSV Robot tiene un funcionamiento muy sencillo. Toma como entrada de datos 2 archivos en formato CSV que lo alimentan de los datos de entrada. Dichos archivos Se denominan ENTRADA_1 y ENTRADA_2. El archivo ENTRADA_1 es obligatorio para trabajar, pero el archivo ENTRADA_2 es opcional. Mas adelante se ver porque la opcin de 2 archivos de entrada. CSV Robot toma un tercer archivo, llamado archivo de SCRIPT. Script significa Guin en ingles, y es un trmino muy comn para denotar pequeos programas que realizan tareas muy especficas. En el caso de CSV Robot, el archivo de Script es el que contiene una lista de operaciones o PROCESOS, que se aplicarn sobre cada uno de los datos de entrada y generaran datos de salida. Dichos datos de salida se almacenan en el archivo SALIDA, y son la informacin til o el resultado del trabajo de CSV Robot. En la siguiente imagen se puede observar un diagrama de los elementos con los que trabaja CSV ROBOT.

    ENTRADA_1: Archivo de texto en formato CSV ENTRADA_2: Archivo de texto en formato CSV (opcional) SCRIPT: Archivo de texto que contiene el Guin o procesos a ejecutar sobre los datos provenientes de los archivos ENTRADA_1 y ENTRADA_2. SALIDA: Es el archivo, en formato CSV resultante de la transformacin de los datos de los archivos ENTRADA_1 y ENTRADA_2 segn las ordenes contenidas en el SCRIPT. De esta explicacin se puede deducir porque el software se llama CSV Robot. El software es un robot, que se encarga de ejecutar las ordenes contenidas en el archivo SCRIPT, y dichas ordenes le indican las operaciones que debe ejecutar sobre los datos de los archivos de entrada para generar un archivo de salida.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 9

    Comencemos con un ejemplo prctico, para entender mejor que puede hacer CSV Robot Ejemplo: Disponemos de un archivo de datos CSV que representa una lista de productos, dicha lista se ha obtenido de una planilla de Excel o de un software de gestin, y contiene los siguientes datos: SKU;NOMBRE;PRECIO;DESCRIPCION A001;Producto1;$10,00;Descripcion1 A002;Producto2;$15,00;Descripcion2 A003;Producto3;$12,50;Descripcion3 .. Como se observa, el archivo emplea como separador de los valores el punto y coma, posee 3 registros (filas de datos), y cada registro posee 4 campos (columnas): - Sku, es el identificador de producto, un cdigo nico que lo identifica y diferencia del resto de los productos de la lista. - Nombre, es el nombre del producto - Precio es el precio del producto, posee signo de moneda ($) y emplea la coma como separador de enteros y decimales (ejemplo: $10,00) - Descripcin, es la descripcin del producto. Es muy normal que el software del cual hemos obtenido la lista de productos, y que puede ser el software de gestin de nuestro negocio, posea ciertas convenciones propias en cuanto a la representacin de la informacin, y que dichas convenciones no se puedan modificar, como por ejemplo, el empleo de la coma como separador de enteros y decimales en el precio, o el empleo del signo de moneda. Obsrvese tambin que es muy comn en muchos softwares, exportar o importar archivos CSV que emplean el carcter punto y coma como separador de los datos, y no la coma. Estas convenciones, son las que provocan problemas a la hora de intentar cargar dicha informacin en un software distinto como ser una tienda online. Puede ser que la tienda online requiera que los precios empleen el punto como separador de enteros y decimales, que no incluyan el signo de moneda, y que la separacin de los valores de cada registro sea con el carcter coma, por ejemplo. Esta adecuacin del archivo CSV obtenido de un software (nuestro software de gestin y facturacin) para cargarlo en otro software distinto (nuestra tienda online) puede ser muy sencilla si contiene una lista pequea de productos, pero lo normal es que la lista contenga muchos registros. Se imagina convertir manualmente este archivo (A) generado por su software de gestin: SKU;NOMBRE;PRECIO;DESCRIPCION A001;Producto1;$10,00;Descripcion1 A002;Producto2;$15,00;Descripcion2 A003;Producto3;$12,50;Descripcion3 .. En este archivo (B) requerido por su tienda online?: SKU,NOMBRE,PRECIO,DESCRIPCION A001,Producto1,10.00,Descripcion1

  • Manual CSV Robot v1.0 - Rev A

    Pagina 10

    A002,Producto2,15.00,Descripcion2 A003,Producto3,12.50,Descripcion3 .. Puede ser muy sencillo si la lista contiene 10, 20 o hasta 50 productos, pero si la lista contiene 2000 productos? Y si es necesario actualizar los precios, agregar o quitar productos con cierta frecuencia?, digamos diariamente? All es donde radica la potencia de CSV Robot. CSV Robot puede convertir el archivo (A) en el archivo (B) en forma totalmente automatizada, si se escribe adecuadamente la Secuencia de tareas a realizar en el archivo de Script, y lo mas importante, es que el archivo de script se puede guardar para emplearlo todas las veces que quiera sobre distintos datos de entrada, por lo que la actualizacin de datos es muy sencilla. 2.1 El archivo Script Vamos a hablar sobre el formato del archivo script empleado por CSV Robot, para luego comenzar a adentrarnos en las funciones disponibles El archivo de script es un archivo de texto que puede contener extensin txt o cualquier otra que se desee. Es recomendable emplear extensin txt para crear y modificar el archivo script con cualquier editor de texto. El archivo de script tiene una estructura de archivo XML simplificada. Internamente deben respetarse ciertas reglas de escritura para que el script pueda ser interpretado correctamente por CSV Robot. La estructura general o esqueleto de un archivo Script ejecutable por CSV Robot es la siguiente: .. .. .. .. El archivo posee elementos llamados secciones. Cada seccin esta delimitada por las etiquetas y y una seccin contiene en su interior a otras secciones y/o parmetros. Es obligatorio que el archivo de script respete esta estructura: una seccin principal ROOT, o raz del script, que contiene en su interior dos secciones, CONFIG y PROCESOS. En la seccin CONFIG se encuentran todos los parmetros de configuracin que emplea CSV robot, como los archivos de entrada, formato de los mismos, etc., y en la seccin PROCESOS, se encuentran justamente los procesos o tareas a ejecutar. Es necesario aclarar que CSV Robot ignora los espacios en blanco y tabulaciones antes y despus del texto, por lo que es lo mismo escribir

  • Manual CSV Robot v1.0 - Rev A

    Pagina 11

    .. . Pero se recomienda el empleo de tabulaciones ya que para un ser humano es mucho ms fcil de leer el primer ejemplo. CSV Robot interpreta los finales de lnea presentes en el archivo, por lo que escribir de la forma . . Es incorrecto. Es necesario que cada etiqueta o se encuentre en una lnea independiente. 2.2 Comentarios Se pueden intercalar comentarios en cualquier parte del script. Los comentarios son ignorados por CSV Robot y tienen la nica funcin de servir al usuario para documentar el script internamente como ayuda a memoria o para agregar toda la informacin que considere necesaria. Los comentarios: 1 Comienzan con ; 2 Ocupan una lnea propia en el archivo Estos son comentarios correctos e incorrectos: ; Este es un comentario correcto .. ; Este es un comentario correcto ; Este es un comentario correcto ; Este es un comentario correcto .. ; Este es un comentario incorrecto ; Este es un comentario incorrecto

  • Manual CSV Robot v1.0 - Rev A

    Pagina 12

    2.3 Parmetros Como se coment previamente, el archivo Script esta organizado en Secciones. Cada seccin puede contener otras secciones y/o parmetros. Las secciones sirven para ordenar y dar estructura al script, mientras que los parmetros son informacin que CSV Robot emplea para trabajar Los parmetros tienen la forma: Parmetro = Valor Valor, se encierra entre comillas. CSV Robot ignora los espacios en blanco, por lo que es indistinto colocar o no espacios entre parmetro, valor y el signo =. Los parmetros, tienen nombre y significado, algunos son obligatorios y otros son opcionales. Los parmetros dentro de la seccin determinan opciones de funcionamiento de CSV Robot, como los nombres de los archivos de datos de entrada ENTRADA_1 y ENTRADA_2 y el nombre del archivo resultado SALIDA. Los parmetros dentro de la seccin configuran cada una de las opciones de los procesos a aplicar a fin de obtener los resultados deseados. 2.4 La seccin Toda la configuracin principal del funcionamiento de CSV Robot se encuentra dentro de la seccin del archivo script. Los parmetros que se encuentran dentro de son los siguientes: ARCHIVO_ENTRADA_1: Obligatorio - Indica el nombre del archivo en formato CSV que ser empleado como entrada de datos numero 1 a CSV Robot. ARCHIVO_ENTRADA_2: Opcional - Indica el nombre del archivo en formato CSV que ser empleado como entrada de datos numero 2 a CSV Robot. ARCHIVO_SALIDA: Obligatorio - Indica el nombre del archivo en formato CSV en el cual se almacenaran los datos procesados por CSV Robot. DELIMITADOR_ENTRADA_1: Opcional Indica cual es el carcter delimitador empleado en ARCHIVO_ENTRADA_1. El valor de este parmetro puede ser , o ;. Si este parmetro no esta presente, se asume que ARCHIVO_ENTRADA_1 emplea el carcter , como delimitador de los datos. DELIMITADOR_ENTRADA_2: Opcional Indica cual es el carcter delimitador empleado en ARCHIVO_ENTRADA_2. El valor de este parmetro puede ser , o ;. Si este parmetro no esta presente, se asume que ARCHIVO_ENTRADA_2 emplea el carcter , como delimitador de los datos. DELIMITADOR_SALIDA: Opcional Indica cual es el carcter delimitador empleado en ARCHIVO_ SALIDA. El valor de este parmetro puede ser , o ;. Si este parmetro no esta presente, se asume que ARCHIVO_ SALIDA emplea el carcter , como delimitador de los datos. Nota sobre los nombres de archivo: CSV Robot trabaja con carpetas relativas a la carpeta en la que se encuentra el script. Por lo tanto, los nombres de archivo que se especifican sin ruta, se buscan en la misma carpeta que el script.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 13

    2.5 Ejemplos de secciones Ejemplo 1 - CSV Robot toma los datos de entrada 1 desde el archivo A.txt ubicado en la misma carpeta del script. No se emplea el archivo de entrada 2, y se especifica S.txt como nombre del archivo de salida. Para ambos archivos, se emplea el carcter , como separador de los datos. ARCHIVO_ENTRADA_1 = A.txt ARCHIVO_SALIDA = S.txt Ejemplo 2 - Los datos de entrada 1 se obtienen de Entrada1.txt, y los datos de salida se almacenan en Salida.txt, pero ahora, los datos se obtienen de un archivo con delimitador , y se desean almacenar con delimitador ; ARCHIVO_ENTRADA_1 = Entrada1.txt (1) DELIMITADOR_ENTRADA_1 = , ARCHIVO_SALIDA = Salida.txt DELIMITADOR_SALIDA = ; La lnea (1) no es necesaria, ya que si se omite el parmetro DELIMITADOR para cualquiera de los archivos, se asume por defecto el carcter , Ejemplo 3 - Los datos de entrada 1 se obtienen de Entrada1.txt, los datos de entrada 2 desde Entrada2.txt y los datos de salida se almacenan en Salida.txt, Se emplea el carcter ; como delimitador para todos los archivos, pero la particularidad, es que Entrada1.txt y Entrada2.txt se encuentran en la carpeta Datos dentro de la carpeta en la que se encuentra el script, y el archivo Salida.txt se crear en la misma carpeta del script ARCHIVO_ENTRADA_1 = Datos\Entrada1.txt DELIMITADOR_ENTRADA_1 = ;

    ARCHIVO_ENTRADA_2 = Datos\Entrada2.txt DELIMITADOR_ENTRADA_2 = ;

    ARCHIVO_SALIDA = Salida.txt DELIMITADOR_SALIDA = ; Ejemplo 4 - Igual al ejemplo 3, pero ahora los datos se encuentran en otra unidad de disco. Esta configuracin no se puede realizar. Como se comento previamente, CSV Robot emplea rutas relativas al archivo de script, por lo tanto, solo puede acceder a archivos

  • Manual CSV Robot v1.0 - Rev A

    Pagina 14

    contenidos dentro de la misma carpeta del archivo scripts o en subcarpetas. Si el archivo script se encuentra en C:\CSVRobot\Ejemplo1\, entonces todos los archivos con los que trabaje CSV Robot se debern encontrar en C:\CSVRobot\Ejemplo1\ o en subcarpetas. 2.6 La seccin Hablemos brevemente de los procesos. Los procesos son las tareas que realiza CSV Robot. El software dispone de una serie de tareas predefinidas que es capaz de realizar. Cada tarea dispone de algunos parmetros obligatorios y otros opcionales, que permiten configurar el comportamiento de la tarea. Cada tarea o proceso, como lo llamaremos de ahora en ms, se define de la forma: ..

    ; comentario (opcional) Parametro1 = Valor1 Parametro1 = Valor1 ParametroN = ValorN ; comentario (opcional)

    .. . Como se comento previamente, todos los procesos se ubican dentro de la seccin PROCESOS, y cada proceso es en si mismo una sub seccin encerrada entre etiquetas y . Ms adelante se vern con ejemplos prcticos cada uno de los procesos y su funcionamiento. Cada proceso requiere de ciertos parmetros para funcionar o realizar su tarea correctamente. Dichos parmetros se definen de la misma forma que se trato anteriormente para la seccin , pero dentro de la seccin que conforma el proceso en si. Dependiendo el proceso que se trate, requerir algunos parmetros en forma obligatoria y otros en forma opcional. 2.7 Segunda aproximacin al funcionamiento de CSV Robot Estamos en condiciones de ver el funcionamiento de CSV Robot en ms detalle. Supongamos que disponemos del siguiente archivo A.txt con formato CSV: Nombre Producto,Sku,Precio Producto1;TP01;$10.00 Producto2;TP02;$12.00 Y deseamos convertirlo en el archivo Salida.txt de la forma: Product Name,Sku,Price,Manufacturer

  • Manual CSV Robot v1.0 - Rev A

    Pagina 15

    Producto1,TP01,10,00,ACME Producto2,TP02,12,00,ACME (Ntese que la columna Price posee los valores encerrados entre comillas dobles, porque adems de eliminarse el signo de moneda $, se ha cambiado el signo de decimales por la coma , y como la coma se emplea como delimitador de los valores del archivo, es necesario agrupar con comillas dobles para evitar que se interpreten las comas internas como delimitadores) Establezcamos ciertas convenciones y definiciones para comprender mejor el funcionamiento de CSV Robot: 1 - Cada lnea del archivo de entrada se denomina registro de entrada. La primera lnea es el registro 1, la segunda el registro 2, etc. En el caso del ejemplo, el primer registro del archivo A.txt es: Producto1;TP01;$10.00 CSV Robot denomina al registro que proviene del archivo de entrada de datos numero 1 como ENTRADA_1, y al que contiene datos del archivo de datos numero 2 (opcional), ENTRADA_2. 2 - Cada lnea del archivo de salida se denomina registro de salida. La primera lnea es el registro 1, la segunda el registro 2, etc. En el caso del ejemplo, el primer registro del archivo Salida.txt es: Producto1,TP01,10,00,ACME CSV Robot denomina al registro del archivo de salida SALIDA. 3 - Cada Registro de Entrada, luego de aplicarse las operaciones o procesos indicados en el script se transforma en un registro de salida, es decir, hay una correspondencia 1 a 1 entre el archivo de entrada y el archivo de salida. Cada registro de entrada, luego de aplicar las operaciones o procesos, genera como resultado un nico registro de salida. Si el archivo de entrada contiene 100 registros, el de salida contendr 100 registros, ni uno mas, ni uno menos. 4 - No es necesario que el registro de salida contenga la misma cantidad de columnas o campos que el registro de salida. En el ejemplo, el registro de entrada posee 3 campos (Nombre Producto,Sku,Precio), y el registro de salida posee 4 campos (Product Name,Sku,Price,Manufacturer) Tambin se observa que no es necesario que los campos del registro de salida tengan el mismo nombre ni el mismo orden que los campos del registro de entrada. Volviendo al ejemplo, si pudisemos dar instrucciones a CSV Robot en lenguaje humano escribiramos un script semejante a esto: Opciones de configuracin: 1 - El archivo de entrada se llama: A.txt 2 - El archivo de entrada emplea ; como separador 3 - El archivo de salida se llama Salida.txt 4 - Quiero emplear el carcter , como separador del archivo de salida Sobre cada Registro (lnea) del archivo de entrada quiero que realices las siguientes operaciones (Procesos): 1 - Toma un registro o lnea del archivo de entrada.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 16

    2 Crea un registro de salida vaci. 3 En el registro de salida, crea una nueva columna llamada Product Name, y dentro de esa columna quiero que copies el contenido de la columna NombreProducto del registro de entrada. 4 En el registro de salida, crea una nueva columna llamada Sku, y dentro de esa columna copia el contenido de la columna Sku del registro de entrada. 5 En el registro de salida, crea una nueva columna llamada Price, y dentro de esa columna quiero que copies el contenido de la columna Precio del registro de entrada, pero eliminando el signo $ y reemplazando el signo . De decimales por el signo ,. 6 En el registro de salida, crea una nueva columna llamada Manufacturer, con un valor constante ACME. 7 - Guarda el registro de salida en el archivo de salida Si el robot pudiera entender el lenguaje humano, repitiendo los procesos 1 a 7 sobre todos los registros del archivo de entrada A.txt, generara el archivo de salida deseado Salida.txt Lamentablemente CSV Robot no entiende el lenguaje humano. CSV Robot interpreta un conjunto reducido de ordenes o procesos, y nosotros como programadores debemos conocer ese abanico de procesos disponibles, y acomodarlos para obtener el resultado deseado de acuerdo a nuestra necesidad. Aun no nos adentraremos en la forma estricta de escribir los procesos, Eso lo iremos viendo paso por paso. Por ahora, haremos una reescritura del script a un formato no tan relajado como el lenguaje humano, y tomando lo visto previamente sobre los parmetros de configuracin y la seccin , nos acercaremos un poco mas a los requerimientos de CSV Robot para el archivo script (aun estamos empleando una sintaxis ligera, hasta que conozcamos realmente los procesos disponibles):

    ARCHIVO_ENTRADA_1 = A.txt DELIMITADOR_ENTRADA_1 = ; ARCHIVO_SALIDA = Salida.txt DELIMITADOR_SALIDA = , ; Paso 1 Lee un registro del archivo de entrada 1, a ese registro se le

    llamar ENTRADA_1 ; Paso 2 Crea registro de salida vaco, sin columnas ni datos.

    A ese registro se le llamar SALIDA ; Paso 3 Origen = Nombre Producto, en registro ENTRADA Destino = Product Name, en registro SALIDA

  • Manual CSV Robot v1.0 - Rev A

    Pagina 17

    ; Paso 4 Origen = Sku, en registro ENTRADA Destino = Sku, en registro SALIDA ; Paso 5 (A) Origen = Precio, en registro ENTRADA Destino = Price, en registro SALIDA ; Paso 5 (B) Origen = Price, en registro SALIDA Destino = Price, en registro SALIDA Texto a eliminar = $ ; Paso 5 (C) Origen = Price, en registro SALIDA Destino = Price, en registro SALIDA Texto a eliminar = $ ; Paso6 Nombre = Manufacturer, en registro SALIDA Valor = ACME ; Paso 7 Guarda el registro de salida empleando el delimitador

    DELIMITADOR_SALIDA

    Hay que notar que el paso 5 se ha dividido en 3 operaciones, la primera es de copia, copia el contenido de la columna Precio del registro de entrada a la columna Price del registro de salida, la segunda operacin, elimina el smbolo $ del contenido de la columna Price y guarda el resultado de la operacin en la misma columna Price. Finalmente, la tercera operacin, reemplaza el smbolo . Empleado como separador decimal, por el smbolo ,. Este tipo de operaciones, en donde se opera sobre una columna y el resultado se guarda en la misma son muy comunes. 2.8 La lgica de ejecucin de CSV Robot Del ejemplo anterior, hay que aclarar que los pasos 1,2 y 7 son realizado automticamente por CSV Robot, es decir, CSV Robot comienza por analizar el script, verificar que se encuentren las secciones requeridas ( y ), que se encuentren los parmetros de configuracin obligatorios (Archivo de entrada 1 y

  • Manual CSV Robot v1.0 - Rev A

    Pagina 18

    archivo de salida), y luego verifica que en la seccin se encuentre la lista de procesos a ejecutar. A continuacin, inicia un ciclo que se repite TANTAS VECES COMO REGISTROS CONTENGA ARCHIVO_ENTRADA_1. Esto es muy importante, la cantidad de registros del archivo de salida esta fijada por la cantidad de registros del archivo ENTRADA_1. En cada ciclo de ejecucin, CSV Robot realiza las siguientes tareas: 1 - Toma un registro de ARCHIVO_ENTRADA_1, y lo denomina ENTRADA_1 2 - Opcionalmente, toma un registro de ARCHIVO_ENTRADA_2, y lo denomina ENTRADA_2 3 Crea un registro de salida vaco, sin columnas, y lo denomina SALIDA 4 - Aplica todos los procesos escritos en la seccin del archivo script sobre los registros obtenidos 5 - Se obtiene un registro resultante de salida, que se escribe en el archivo ARCHIVO_SALIDA. 6 - Repetir el ciclo desde (1) hasta que se acaben los registros del archivo de entrada 1

  • Manual CSV Robot v1.0 - Rev A

    Pagina 19

    3. La interfaz grfica de CSV Robot CSV Robot es un software para entornos Windows. La interfaz grfica es muy sencilla, ya que esta orientado a automatizar procesos con la mnima intervencin del usuario:

    1 Botn Abrir Script: Al hacer clic en este botn, se presentar un cuadro de dilogo que permitir seleccionar el archivo script a cargar:

    Recordar que el archivo script puede tener cualquier extensin y nombre, mientras sea un archivo de texto y cumpla con el formato requerido por CSV Robot. Se recomienda emplear el nombre Script.txt (El nombre para recordar de que se trata, y txt para poder editarlo con cualquier editor simple de texto).

  • Manual CSV Robot v1.0 - Rev A

    Pagina 20

    2 Botn Ejecutar Script: Si se carga correctamente el script seleccionado, y no se detectan errores de formato del mismo, se habilita este botn, que permite ejecutar el script. Cuando comienza la ejecucin del script, este botn cambia a Detener Script, y permite que el usuario termine la ejecucin del script en cualquier momento.

    3 Informacin del script: Aqu se presenta la informacin del script abierto, nombre del archivo script, y los nombres de los archivos de entrada 1 y 2, y de salida (parmetros recuperados del archivo script)

    4 Informacin de proceso: Aqu se muestra el proceso actual que se esta aplicando sobre el registro actual. Muestra el numero total de procesos a aplicar, y el nombre de cada proceso que se aplica. Cuando la barra de estado se llena totalmente, se termina de procesar un registro del archivo de entrada.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 21

    5 Informacin del registro: Aqu se muestra que registro se esta procesando actualmente y cuantos son los registros a procesar. Cuando la barra se llena totalmente, se termina el script.

    6 Reporte de errores. Si ocurre algn error al ejecutar el script, se despliega un cuadro de dialogo indicando que ha ocurrido un error, y aqu se informa en que registro y en que proceso ocurri el mismo.

    Como hay errores que solo se pueden detectar cuando se ejecuta el script, esta informacin es muy til para encontrar errores en los scripts.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 22

    4. Los procesos de CSV Robot Es hora de comenzar a ver los procesos que puede realizar CSV Robot sobre los datos. Se vern los procesos uno a uno con ejemplos. Los archivos y scripts de ejemplo se pueden encontrar en la carpeta Ejemplos, dentro de la carpeta del ejecutable de CSV Robot 4.1 Proceso SETEAR_VALOR_COLUMNA Este es uno de los procesos mas sencillos y mas empleados. La operacin consiste en fijar el valor de una columna del REGISTRO DE SALIDA. Los parmetros requeridos por este proceso son: COLUMNA = CCC, indica el nombre de la columna del registro SALIDA sobre la cual se fijar el valor VALOR = VVV, indica el valor a escribir en la columna. Ejemplo: COLUMNA = Proveedor VALOR = ACME Hay que notar los siguientes puntos: 1 - Si la columna CCC, o en el caso del ejemplo, la columna Proveedor, no existe en el registro de SALIDA, se crea automticamente antes de setear su valor. 2 - Durante el procesamiento, en cada ciclo de trabajo, el registro de SALIDA se inicia en blanco, sin NINGUNA columna. No se copia automticamente ninguna columna de ninguno de los registros de entrada al registro de salida. Por lo tanto, si se escribe un script de la forma:

    Sin ningn proceso a ejecutar, se obtendr un archivo de salida vaco, sin registros ni columnas, ya que NINGUNA COLUMNA de los registros de entrada se copia automticamente al registro de salida. Volviendo al proceso que estamos conociendo, si escribimos un script (a partir de este punto se omiten las etiquetas ROOT y la seccin CONFIG para clarificar el texto) de la forma: ..

  • Manual CSV Robot v1.0 - Rev A

    Pagina 23

    COLUMNA = Proveedor VALOR = ACME

    Si inicialmente la columna Proveedor no exista en el registro de salida, se crea automticamente y luego se le fija el valor a ACME. Si el archivo ARCHIVO_ENTRADA_1 posee 3 registros, luego de procesar este script se obtendr un ARCHIVO_SALIDA con el siguiente contenido: Proveedor ACME ACME ACME Ntese nuevamente que SIN IMPORTAR el contenido de los archivos de entrada, el archivo de salida tendr la forma mostrada, ya que NO SE COPIA en forma automtica ninguna columna de ninguno de los registros de entrada. Esto no es muy til, cierto?. La utilidad de este y todos los procesos se potencia cuando tratemos el tema Direccionamiento de variables. Haremos una pequea pausa en el estudio de los procesos para ver el tema de direccionamiento de variables 4.1.1 Direccionamiento de variables El direccionamiento de variables nos permite tomar el valor de un campo de un registro y emplearlo en cualquier parmetro de cualquier proceso. Vamos por partes: Si el archivo de entrada ARCHIVO_ENTRADA_1 tiene la forma: SKU,NOMBRE,PRECIO A001,Producto1,10.00 A002,Producto2,15.00 A003,Producto3,12.00 El archivo de entrada ARCHIVO_ENTRADA_2 tiene la forma DESCRIPCION Descripcion 1 Descripcion 2 Descripcion 3 Y el nico proceso a ejecutar tiene la forma

    COLUMNA = Name VALOR = Producto1

  • Manual CSV Robot v1.0 - Rev A

    Pagina 24

    Se obtendr un archivo ARCHIVO_SALIDA de la forma Name Producto1 Producto1 Producto1 Esto ocurre as porque el valor Producto 1 que se setea en la columna Name es una constante, y no cambia su valor en cada ciclo de trabajo sobre los registros. Si ahora en cambio, escribimos el proceso de la siguiente forma:

    COLUMNA = Name VALOR =

    Se obtendr un archivo ARCHIVO_SALIDA de la forma Name Producto1 Producto2 Producto3 Que ha pasado? Se ha empleado la caracterstica de Direccionamiento de variables. El direccionamiento de variables tiene la forma y lo que provoca es que antes de ejecutarse el proceso, se reemplazan los valores contenidos entre por los valores diseccionados. En este caso, se reemplaza por el valor contenido en la columna NOMBRE del registro ENTRADA_1. Recordar que en cada ciclo de ejecucin, se toma un nuevo registro ENTRADA_1 desde el archivo ARCHIVO_ENTRADA_1, un nuevo registro ENTRADA_2 desde el archivo ARCHIVO_ENTRADA_2 y se genera un nuevo registro de salida vaco, por lo tanto, en el primer ciclo de ejecucin se reemplaza por Producto1, en el segundo ciclo por Producto2 y en el tercer ciclo por Producto3. En el direccionamiento de variables, REGISTRO puede ser ENTRADA_1, ENTRADA_2 o SALIDA. Y COLUMNA, debe existir previamente, de lo contrario, se interrumpe el script y reporta error. Con estos conceptos, vamos a emplear el proceso SETEAR_VALOR_COLUMNA, en conjunto con el direccionamiento de variables para algunos ejemplos prcticos Los ejemplos que se presentan a continuacin trabajan con los siguientes archivos de datos: Entrada1.txt:

  • Manual CSV Robot v1.0 - Rev A

    Pagina 25

    Nombre;Sku;Precio Producto1;TP01;$10.00 Producto2;TP02;$12.00 Producto3;TP03;$13.00 Entrada2.txt Descripcion,Oferta Descripcion1,Si Descripcion2,No Descripcion3,No 4.1.2 Ejemplo 1 Conversin de formatos CSV Este ejemplo de puede encontrar en Ejemplos\Ejemplo1\Script.txt Este ejemplo simplemente genera un archivo Salida.txt que contiene la misma informacin que Entrada1, solo que Entrada1.txt posee como delimitador de campos el carcter ; y Salida emplea el delimitador , Script: ; Parametros de Configuracion ; --------------------------------------------------------------- (1) ARCHIVO_ENTRADA_1 = "Entrada1.txt" (2) DELIMITADOR_ENTRADA_1 = ";" (3) (4) ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- (5) COLUMNA = "Nombre" VALOR = "" (6) COLUMNA = "Sku" VALOR = "" (7) COLUMNA = "Precio" VALOR = ""

  • Manual CSV Robot v1.0 - Rev A

    Pagina 26

    Configuracin: (1) Se configura Entrada1.txt como archivo de datos para el registro de entrada 1 (2) Se indica que el archivo de entrada 1 posee como delimitador ; (3) Se omite el parmetro ARCHIVO_ENTRADA_2, ya que no se necesitan datos de otro archivo. (Se ha dejado la lnea en blanco para explicar, pero no es necesario). (4) Se configura Salida.txt como nombre del archivo de salida donde almacenar los resultados del script. Ntese que se omite el parmetro DELIMITADOR_SALIDA, ya que su valor por defecto es , y es el delimitador que se desea para Salida.txt Procesos (5) Recordemos que el registro SALIDA inicia cada ciclo de trabajo sin columnas ni valores. Aqu se setea el valor de la columna Nombre del registro SALIDA (como no existe la columna previamente, se crea la misma), con el valor proveniente de la columna Nombre del registro ENTRADA_1 (que como se sabe toma sus valores del archivo Entrada1.txt). En resumen, esta operacin copia el valor de la columna Nombre del registro ENTRADA_1 en el registro SALIDA, en la columna tambin llamada Nombre. (6) La misma operacin, copia la columna Sku al registro de salida, con nombre tambin Sku (7) La misma operacin, copia la columna Precio al registro de salida, con nombre tambin Precio. Finalizada la operacin, el registro de salida, que ahora posee columnas Nombre, Sku y Precio, se guarda en el archivo Salida.txt, empleando , como delimitador de valores. Luego de ejecutar este script se obtiene Salida.txt: Nombre,Sku,Precio Producto1,TP01,$10.00 Producto2,TP02,$12.00 Producto3,TP03,$13.00 4.1.3 Ejemplo 2 Cambio de nombres de columnas Este ejemplo de puede encontrar en Ejemplos\Ejemplo2\Script.txt Este ejemplo es muy similar a ejemplo 1. Se genera un archivo Salida.txt que contiene la misma informacin que Entrada1, solo que Entrada1.txt posee como delimitador de campos el carcter ; y Salida emplea el delimitador ,, Y ahora se aade el requerimiento de que las columnas del archivo de salida se deben Llamar Name, Sku y Price Script: ; Parmetros de Configuracin ; ---------------------------------------------------------------

  • Manual CSV Robot v1.0 - Rev A

    Pagina 27

    ARCHIVO_ENTRADA_1 = "Entrada1.txt" DELIMITADOR_ENTRADA_1 = ";" ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- (1) COLUMNA = "Name" VALOR = "" (2) COLUMNA = "Sku" VALOR = "" (3) COLUMNA = "Price" VALOR = "" Configuracin: dem a Ejemplo 1 Procesos (1) Se realiza una copia del contenido de la columna Nombre del registro de entrada 1 a la columna Name del registro de Salida. Como dicha columna no exista previamente, se crea antes de copiar el valor (2) La misma operacin, copia la columna Sku al registro de salida, con nombre tambin Sku (3) La misma operacin, copia la columna Precio al registro de salida, con nombre ahora Price. Finalizada la operacin (3), el registro de salida, que ahora posee columnas Name, Sku y Price, se guarda en el archivo Salida.txt Luego de ejecutar este script se obtiene Salida.txt: Name,Sku,Price Producto1,TP01,$10.00 Producto2,TP02,$12.00 Producto3,TP03,$13.00

  • Manual CSV Robot v1.0 - Rev A

    Pagina 28

    4.1.4 Ejemplo 3 Combinar dos archivos CSV en uno Este ejemplo de puede encontrar en Ejemplos\Ejemplo3\Script.txt Este ejemplo genera un archivo Salida.txt que contiene las columnas Name, cuyo contenido es el mismo de la columna Nombre del archivo de Entrada 1, Sku, que contiene el mismo contenido de la columna Sku del archivo de Entrada 1, y la columna Description, que contiene los mismos valores que la columna Descripcion del archivo de Entrada 2. Salida emplea el delimitador , Script: ; Parmetros de Configuracin ; --------------------------------------------------------------- (1) ARCHIVO_ENTRADA_1 = "Entrada1.txt" DELIMITADOR_ENTRADA_1 = ";" (2) ARCHIVO_ENTRADA_2 = "Entrada2.txt" (3) ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- (4) COLUMNA = "Name" VALOR = "" (5) COLUMNA = "Sku" VALOR = "" (6) COLUMNA = "Description" VALOR = "" Configuracin: (1) Se configura Entrada1.txt como archivo de datos para el registro de entrada 1, y se indica que posee datos delimitados por ; (2) Se configura Entrada2.txt como archivo de datos para el registro de entrada 2, y se indica, por omisin del parmetro DELIMITADOR_ENTRADA_2, que posee datos delimitados por , (3) Se configura el archivo de salida como Salida.txt, empleando tambin , como delimitador.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 29

    Procesos (4) Se copia el contenido de la Columna Nombre del registro de Entrada 1 en la columna Name del registro de salida. (5) Se copia el contenido de la Columna Sku del registro de Entrada 1 en la columna Sku del registro de salida. (6) Se copia el contenido de la Columna Descripcion del registro de ENTRADA 2 en la columna Description del registro de salida. Luego de ejecutar este script se obtiene Salida.txt: Name,Sku,Price,Description Producto1,TP01,$10.00,Descripcion1 Producto2,TP02,$12.00,Descripcion2 Producto3,TP03,$13.00,Descripcion3 Nota importante: Cuando se combinan datos desde dos archivos de entrada ENTRADA_1 y ENTRADA_2, es OBLIGATORIO, que ambos archivos posean la misma cantidad de registros, ya que en cada ciclo de trabajo CSV Robot lee un registro de cada archivo, aplica los procesos definidos en el script y genera un nico registro de salida. La condicin de igualdad en la cantidad de registros de los archivos de entrada, se verifica al momento de cargar el archivo script. Si los archivos de entrada difieren en el numero de registros, CSV Robot lo advierte con un mensaje de error, y no permite la ejecucin del script. Despus de ver estos ejemplos, se puede entender la potencia que posee CSV Robot para ejecutar tareas repetitivas sobre archivos en formato CSV. Con solo un proceso de los que CSV pone a disposicin de los usuarios se puede ahorrar mucho tiempo de trabajo y eliminar la posibilidad de errores al intentar convertir a mano grandes archivos CSV.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 30

    4.2 Proceso EXTRAER_TEXTO_DESDE_TEXTO Este proceso es muy til para manipular los contenidos de los campos en los registros. El funcionamiento de este proceso consiste en tomar un texto a procesar, el cual puede estar especificado en forma textual o empleando Direccionamiento de variables, y extraer del mismo una porcin de texto. La porcin a extraer se especifica entre dos textos delimitadores denominados TAG_INICIO y TAG_FINAL, que se proporcionan como parmetros. Los parmetros requeridos por este proceso son: TEXTO = TEXTO FUENTE - Obligatorio, es el texto a procesar. Se puede indicar un texto fijo, o empleando direccionamiento de campos, procesar el contenido de una columna del registro ENTRADA_1, ENTRADA_2 o SALIDA. COLUMNA = "CCC" - Obligatorio, indica el nombre de la columna del REGISTRO DE SALIDA en la cual se colocar el texto extrado. Si la columna no existe, se crea para almacenar el valor. TAG_INICIO = "AAA" - Obligatorio, indica el Delimitador inicial a partir del cual extraer el texto de inters. Si se especifica TAG_INICIO = , se extrae desde el comienzo de TEXTO_FUENTE TAG_FINAL = "BBB" - Obligatorio, indica el delimitador final hasta el cual extraer el texto de inters. Si se especifica TAG_FINAL = , se extrae hasta el final de TEXTO_FUENTE INCLUIR_TAGS = 1 - Opcional, si se incluye, su valor debe ser 1. Si este parmetro se incluye, al resultado extrado, se le aaden TAG_INICIO y TAG_FINAL antes de guardar en la columna destino. Este proceso se emplea para extraer una parte determinada de un campo de un registro. Por ejemplo, si el registro de entrada posee una columna con nombre Precio, que tiene la forma $10.00 y se desea extraer de dicha columna el precio sin decimales y sin el signo $ y guardarlo en la columna Price de salida, entonces se puede ejecutar el proceso EXTRAER_TEXTO_DESDE_TEXTO, con los siguientes parmetros: TEXTO = "" COLUMNA = "Price" TAG_INICIO = "$" TAG_FINAL = "." Obsrvese que la interpretacin de este fragmento de script que hace CSV Robot es la siguiente: Extraer del texto contenido en la COLUMNA Precio del registro ENTRADA_1, el fragmento de texto que se encuentra entre $ al comienzo y . al final. A ese fragmento obtenido almacenarlo en la columna Price del registro SALIDA. Con este proceso configurado de esa manera, se obtiene 10 a partir del texto original $10.00. Otros ejemplos de parmetros:

  • Manual CSV Robot v1.0 - Rev A

    Pagina 31

    (1) - TEXTO = "Texto de prueba, precio $10.25 para este producto" COLUMNA = "Price" TAG_INICIO = "$" TAG_FINAL = "." Almacena 10 en la columna Price (2) - TEXTO = "Texto de prueba, precio $10.25 para este producto" COLUMNA = "Price" TAG_INICIO = "$" TAG_FINAL = "." INCLUIR_TAGS = "1" Almacena $10. en la columna Price Ntese que el fragmento extrado es el mismo que para (1), solo que ahora se aaden los tags delimitadores antes de guardar el resultado en la columna Price (3) - TEXTO = "Texto de prueba, precio $10.25 para este producto" COLUMNA = "Price" TAG_INICIO = "$" TAG_FINAL = " " Almacena 10.25 en la columna Price (4) - TEXTO = "Texto de prueba" COLUMNA = "Resultado" TAG_INICIO = "" TAG_FINAL = " " Almacena Texto en la columna Resultado. Ntese que TAG_INICIO = indica que el fragmento a extraer comienza desde el inicio del texto fuente (5) -

  • Manual CSV Robot v1.0 - Rev A

    Pagina 32

    TEXTO = "Texto de prueba" COLUMNA = "Resultado" TAG_INICIO = "de " TAG_FINAL = "" Almacena prueba en la columna Resultado. Ntese que TAG_FINAL = indica que el fragmento a extraer termina donde finaliza el texto fuente 4.2.1 Ejemplo 4 Extraccin de texto Este ejemplo de puede encontrar en Ejemplos\Ejemplo4\Script.txt Este ejemplo toma 1 archivo de entrada Entrada1.txt con columnas Nombre, Sku y Precio, y genera un archivo de salida Salida.txtcon columnas Name, Sku y Price con los valores correspondientes. La particularidad de este ejemplo es que la columna Precio del archivo de entrada tiene la forma $10.00, y la columna Price posee la forma 10.00 (sin $) Entrada1.txt: Nombre,Sku,Precio Producto1,TP01,$10.00 Producto2,TP02,$12.00 Producto3,TP03,$13.00 Script: ; Parametros de Configuracion ; --------------------------------------------------------------- (1) ARCHIVO_ENTRADA_1 = "Entrada1.txt" (2) ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- (3) COLUMNA = "Name" VALOR = "" (4) COLUMNA = "Sku" VALOR = ""

  • Manual CSV Robot v1.0 - Rev A

    Pagina 33

    (5) COLUMNA = "Price" VALOR = "" (6) TEXTO = "" COLUMNA = "Price" TAG_INICIO = "$" TAG_FINAL = "" Configuracin: (1) Se configura Entrada1.txt como archivo de datos para el registro de entrada 1, y por omisin del parmetro DELIMITADOR, se asume que el archivo de entrada 1 posee como delimitador , (2) Se configura Salida.txt como nombre del archivo de salida donde almacenar los resultados del script, tambin con delimitador ,. Procesos (3) Se realiza una copia del contenido de la columna Nombre del registro ENTRADA_1 a la columna Name del registro SALIDA. Como dicha columna no exista previamente, se crea antes de copiar el valor (4) La misma operacin, copia la columna Sku al registro SALIDA, con nombre tambin Sku (5) La misma operacin, copia la columna Precio al registro SALIDA, con nombre ahora Price. (6) Se realiza un proceso EXTRAER_TEXTO_DESDE_TEXTO. Dicho proceso toma el contenido de la columna Price del registro SALIDA (dicha columna se creo en el paso (5) con el valor original de la columna Precio), y de la misma extrae el texto que comienza a partir de la primera aparicin del texto $ y hasta el final del texto fuente. El fragmento extrado se guarda en la misma columna Price del cual se tomo el texto fuente a procesar. 4.2.2 Optimizacin del script En el paso (6), el proceso EXTRAER_TEXTO_DESDE_TEXTO guarda el resultado de la extraccin de texto en la columna Price del registro SALIDA. Dicha columna fue creada previamente en el paso (5). Como el proceso EXTRAER_TEXTO_DESDE_TEXTO verifica si la columna donde se almacena el resultado de la operacin existe, y de no ser as, la crea antes de almacenar el valor, se pueden reemplazar los procesos (5) y (6) por un nico proceso optimizado (5): (5) TEXTO = "" COLUMNA = "Price" TAG_INICIO = "$"

  • Manual CSV Robot v1.0 - Rev A

    Pagina 34

    TAG_FINAL = ""

    Ntese que ahora, en lugar de hacer un paso previo copiando el contenido a desde la columna Precio del registro ENTRADA_1 a una nueva columna Price, y luego realizar el proceso de extraccin, se hace un solo paso, realizando el proceso de extraccin desde la columna original Precio y guardando el resultado en la columna Price que como no exista previamente, se crea para completar la operacin. Luego de ejecutar este script se obtiene Salida.txt: Name,Sku,Price Producto1,TP01,10.00 Producto2,TP02,12.00 Producto3,TP03,13.00

  • Manual CSV Robot v1.0 - Rev A

    Pagina 35

    4.3 Proceso REEMPLAZAR_TEXTO_EN_TEXTO Este proceso es muy sencillo, consiste en tomar un texto a procesar, el cual puede estar especificado en forma textual o empleando Direccionamiento de variables, buscar en el mismo una porcin de texto determinada, y una vez encontrada, reemplazarla por otra porcin de texto proporcionada como parmetro. Los parmetros requeridos por este proceso son: TEXTO = TEXTO FUENTE - Obligatorio, es el texto a procesar. Se puede indicar un texto fijo, o empleando direccionamiento de variables, procesar el contenido de una columna del registro ENTRADA_1, ENTRADA_2 o SALIDA. COLUMNA = "CCC" - Obligatorio, indica el nombre de la columna del registro SALIDA en la cual se colocar el texto procesado. Si la columna no existe, se crea para almacenar el valor. BUSCAR = "AAA" - Obligatorio, es la porcin de texto que se va a buscar en TEXTO. Tambin, puede ser un valor textual fijo, o un valor obtenido de cualquier columna empleando el direccionamiento de variables. REEMPLAZAR = "BBB" - Obligatorio, indica el texto que reemplazar a la porcin indicada por el parmetro BUSCAR, en el texto TEXTO. REPETIR = N - Opcional, si no se incluye, o su valor es 1, el proceso busca dentro de TEXTO la primera aparicin de la porcin BUSCAR, y la reemplaza por la porcin REEMPLAZAR, terminando el proceso. Si su valor es N, el proceso se repite reemplazando hasta N apariciones de BUSCAR. Por ejemplo, si el texto BUSCAR aparece 10 veces en TEXTO, y se hacer REPETIR=5, se reemplazaran las primeras 5 apariciones del texto buscado. Si se desean reemplazar todas las apariciones del texto buscado, y no se conoce de antemano cuantas puede haber, entonces se puede fijar un valor arbitrariamente grande a N, 100 o 200 por ejemplo. 4.3.1 Ejemplo 5 Reemplazo de texto Este ejemplo de puede encontrar en Ejemplos\Ejemplo5\Script.txt Se dispone del siguiente archivo Entrada1.txt: Nombre,Sku,Precio Producto1,TP01,$10.00 Producto2,TP02,$12.00 Producto3,TP03,$13.00 Y se desea obtener un archivo Salida.txt con la misma informacin, pero se desea que el campo Precio, contenga valores SIN el signo $ y reemplazando el signo decimal . Por la coma ,. Script: ; Parametros de Configuracion ; --------------------------------------------------------------- (1) ARCHIVO_ENTRADA_1 = "Entrada1.txt"

  • Manual CSV Robot v1.0 - Rev A

    Pagina 36

    (2) ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- (3) COLUMNA = "Nombre" VALOR = "" (4) COLUMNA = "Sku" VALOR = "" (5) COLUMNA = "Precio" VALOR = "" (6) TEXTO = "" COLUMNA = "Precio" BUSCAR = "$" REEMPLAZAR = "" (7) TEXTO = "" COLUMNA = "Precio" BUSCAR = "." REEMPLAZAR = "," Configuracin: (1) Se configura Entrada1.txt como archivo de datos para el registro de entrada 1, y por omisin del parmetro DELIMITADOR, se asume que el archivo de entrada 1 posee como delimitador , (2) Se configura Salida.txt como nombre del archivo de salida donde almacenar los resultados del script, tambin con delimitador ,. Procesos (3) Se realiza una copia del contenido de la columna Nombre del registro ENTRADA_1 a la columna Nombre del registro SALIDA. Como dicha columna no exista previamente en el registro SALIDA, se crea antes de copiar el valor (4) La misma operacin, copia la columna Sku al registro SALIDA, con nombre tambin Sku

  • Manual CSV Robot v1.0 - Rev A

    Pagina 37

    (5) La misma operacin, copia la columna Precio al registro SALIDA, con nombre ahora Precio. (6) Se realiza un proceso REEMPLAZAR_TEXTO_EN_TEXTO. Dicho proceso toma el contenido de la columna Precio del registro SALIDA (dicha columna se creo en el paso (5) con el valor original de la columna Precio), y en el contenido de dicha columna, BUSCA la primera aparicin de $ y la REEMPLAZA por , es decir, elimina la aparicin de $.El texto resultante de este proceso se guarda nuevamente en la columna Precio del registro SALIDA. (7) Se realiza un proceso REEMPLAZAR_TEXTO_EN_TEXTO. Dicho proceso toma el contenido de la columna Precio del registro SALIDA, y en el contenido de dicha columna, BUSCA la primera aparicin de . y la REEMPLAZA por ,.El texto resultante de este proceso se guarda nuevamente en la columna Precio Luego de ejecutar este script se obtiene Salida.txt: Name,Sku,Price Producto1,TP01,"10,00" Producto2,TP02,"12,00" Producto3,TP03,"13,00" Nota Importante: en el archivo de salida, la columna Precio posee los valores de cada registro encerrados entre comillas dobles. Eso es porque el valor de esa columna contiene un carcter , que es el mismo que se emplea como delimitador de campos para el archivo de salida. El cierre de valores entre comillas se realiza automticamente por CSV Robot cuando detecta que el valor de un campo posee en su interior el mismo carcter que se emplea como delimitador en el archivo. Si en el script se hubiese empleado ; como delimitador del archivo Salida.txt, todos los campos estaran separados por ; y el campo precio no estara encerrado entre comillas, porque ya no sera necesario.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 38

    4.4 Proceso QUITAR_COLUMNA Este proceso es muy sencillo, y a primera vista carece de utilidad, aunque a medida que se estudien el resto de los procesos se ver que a veces es necesario, cuando se emplean columnas en forma temporal. El Proceso QUITAR_COLUMNA simplemente elimina una columna del registro SALIDA. Toma un nico parmetro COLUMNA, el cual es obligatorio, e indica el nombre de la columna a eliminar. Es un proceso muy simple, por lo que se explica rpidamente con un ejemplo sencillo: Ejemplo:

    . . (1)

    COLUMNA = "Temp" VALOR = ""

    . . .

    (2) COLUMNA = "Temp"

    . .

    Procesos (1) Se realiza una copia del contenido de la columna Nombre del registro ENTRADA_1 a la columna Temp del registro SALIDA. Si dicha columna no exista previamente, se crea antes de copiar el valor (2) Luego de una serie de procesos, que emplearon el contenido de la columna Temp para diversas operaciones, se decide eliminar dicha columna del registro SALIDA, para que no aparezca al final del proceso en el archivo de salida. Entonces de ejecuta el proceso QUITAR_COLUMNA indicando que elimine la columna Temp.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 39

    5. Procesos orientados al Web Scraping 5.1 Que es el Web Scraping? El Web Scraping se puede considerar como un proceso que analiza y extrae informacin de un sitio web. Las pginas que ofrecen los sitios web se codifican en HTML, es decir, utilizan una estructura de rbol para representar la informacin de manera que sta se mezcla con el diseo, lo que hace que los datos que realmente interesan no se puedan manejar o comparar fcilmente y de una manera inmediata. El proceso consiste bsicamente en simular a una persona que se halle navegando por un sitio web. En primer lugar, se conecta al sitio web y le solicita una pgina, tal y como lo hara un navegador. El servidor web le devuelve la pgina y la aplicacin de Web Scraping recoge la informacin de inters en un formato que luego se puede procesar. CSV Robot permite realizar web scraping de una pagina web, y recuperar informacin de la misma, dicha informacin puede ser texto, que se almacena en archivos CSV, Pero CSV Robot no se limita a recuperar solo texto, sino que tambin puede descargar contenido HTML, imgenes, y archivos. Nota: Si bien las funciones de web scraping de CSV Robot son muy sencillas, implementar un caso particular de web scraping sobre un determinado sitio puede no serlo. Es necesario tener un buen conocimiento de HTML para poder determinar los procesos y parmetros a emplear en el script de CSV Robot para extraer la informacin de nuestro inters. 5.1 Proceso DESCARGAR_HTML Este proceso es el pilar fundamental del web scraping. Este proceso recibe como parmetro el Link de una pgina web, y descarga todo el contenido Html de la misma en una columna del registro de salida. Los parmetros requeridos por este proceso son: LINK = http://www.pagina.com - Obligatorio, es el link de la pagina a descargar. Es obligatorio tambin que comience con http://www. COLUMNA = "CCC" - Obligatorio, indica el nombre de la columna del registro SALIDA en la cual se colocar la pagina descargada. Si la columna no existe, se crea para almacenar el valor. Obviamente, el proceso DESCARGAR_HTML no tiene razn de ser si luego no se aplican procesos de extraccin de informacin. El contenido completo de una pagina html guardado en un archivo CSV es algo ilgico, por lo cual, este proceso siempre es el punto de partida a una serie de operaciones para recuperar datos tiles a partir de la pgina descargada. 5.1.1 Ejemplo 6 Extraccin de informacin de una tienda online Este ejemplo de puede encontrar en Ejemplos\Ejemplo6\Script.txt Demostraremos como ejemplo el empleo de los procesos estudiados hasta el momento en una aplicacin real, y realizada muy frecuentemente: La extraccin de informacin desde una tienda online.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 40

    Para ello, planteamos como ejemplo la necesidad de extraer los nombres y precios de varios productos de la siguiente tienda online: http://www.e-crazydeals.com Las razones por las que necesitamos acceder a los productos de esta web y extraer informacin pueden ser muy variadas, por ejemplo: - Vendemos los mismos productos en ebay y deseamos tener un proceso automatizado que extraiga los precios de los productos que comercializamos de varias webs, para comparar con nuestros precios - La tienda es nuestro proveedor, y con este proceso automatizado podemos extraer imgenes, descripciones y precios para luego aadir a nuestra propia tienda. Si navegamos por la tienda e ingresamos a la pagina de un producto, por ejemplo: http://www.e-crazydeals.com/store/index.php/ramos-w19-v2-0-tablet-pc-android-4-0-3-cortex-a9-dual-camera-8gb.html Vemos una pagina de producto con nombre, descripcin, imgenes, precio, etc. Si entramos a las pginas de varios productos de la tienda y empleamos alguna herramienta que nos permita ver la estructura html de la pgina (muy recomendable google chrome, opcin inspeccionar elemento del men contextual), veremos que se repite constantemente la misma estructura, y solo varia el contenido. Esto es muy comn, porque estas tiendas mantienen su informacin en una base de datos y cuando se accede a la pgina de un producto, se emplea una plantilla que se rellena con la informacin referente al producto que estamos viendo. 5.1.2 Anlisis de la estructura de la pgina Siempre para poder encarar un proceso de extraccin de informacin de la web, es necesario analizar la estructura de las pginas de la web en la que me interesa extraer la informacin. Para este ejemplo, intentamos acceder a las pginas de varios productos de una tienda online, y recuperar de las mismas nombre del producto y precio. Si ingresamos a la pgina de cualquier producto de la tienda y analizamos su estructura veremos lo siguiente: 1 - El nombre del producto se encuentra en un DIV de la siguiente forma: .Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB. Es importante al analizar una pgina para hacer web scraping, ubicar los elementos estructurales del html de la pgina. En el texto, se han coloreado con azul los mismos. Estos elementos normalmente no variaran dentro de la misma web, independientemente del producto que estemos visualizando, y nos sern de utilidad para encontrar y extraer la informacin que nos interesa.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 41

    2 - El precio del producto se encuentra en un DIV de la siguiente forma: $125.00 Para extraer la informacin que nos interesa, armaremos un script que instruya a CSV Robot a realizar las siguientes tareas: 1 Se toma desde un archivo de entrada un link de una de las pginas de las que se desea extraer la informacin 2 Con ese link, descargaremos la pgina completa del producto. 3 Con el proceso extraer texto recuperaremos de la pagina completa la porcin correspondiente al nombre del producto 4 - Con el proceso extraer texto recuperaremos de la pagina completa la porcin correspondiente al precio del producto 5 Guardaremos el resultado en un archivo de salida 5.1.3 El ejemplo paso a paso: El archivo de entrada Links.txt Crearemos un archivo txt en formato CSV con el siguiente contenido (el archivo contiene 3 lneas de texto): ID,Link Producto001,http://www.e-crazydeals.com/store/index.php/ramos-w19-v2-0-tablet-pc-android-4-0-3-cortex-a9-dual-camera-8gb.html Producto002,http://www.e-crazydeals.com/store/index.php/cube-mini-u30gt-tablet-pc-rk3066-7-0-inch-android-4-0-16gb-1g-ram-win8-ui-white.html Producto003,http://www.e-crazydeals.com/store/index.php/yeahpad-a13-tablet-pc-7-inch-ultra-thin-android-4-0-4gb-camera-black.html Este archivo es el que alimentar a CSV Robot con los links de las pginas de las cuales deseo extraer la informacin. El campo ID ser empleado en ejemplos mas adelante. 5.1.4 El ejemplo paso a paso: El archivo Script.txt Ahora crearemos el archivo de script, comenzado por la configuracin del proyecto:

    ; Parametros de Configuracion ; --------------------------------------------------------------- ARCHIVO_ENTRADA_1 = "Links.txt" ARCHIVO_SALIDA = "Salida.txt" Se definen archivos de entrada y salida, y como se omiten los parmetros de delimitadores, se asume que ambos emplean el carcter ,. Deseamos que el archivo de salida contenga 3 columnas: ID,Nombre y Precio. El valor ID proviene de la columna ID del archivo de entrada Links.txt, y los campos Nombre y Precio, provienen del contenido HTML de la pgina del producto, por lo que si recordamos que el proceso DESCARGAR_HTML obtiene una pagina en html y guarda

  • Manual CSV Robot v1.0 - Rev A

    Pagina 42

    el contenido en una columna del registro de salida, entonces ser necesario emplear una columna temporal para almacenar el HTML descargado y procesarlo. Empezaremos por copiar ID del registro de entrada al registro de Salida COLUMNA = "ID" VALOR = "" Ahora, realizaremos la descarga de la pagina, empleando el link que proviene del archivo de entrada: COLUMNA = "TEMP_HTML" LINK = "" Este proceso descarga el html de una pgina, en una columna destino del registro SALIDA. A esa columna la hemos llamado TEMP_HTML. Como la columna no existe previamente, se crea para la operacin. La direccin de la pgina se provee al proceso con el parmetro LINK, que en este caso, toma su valor de la columna Link del registro ENTRADA_1 (los links que proporcionamos como datos en el archivo Links.txt). Nota: Emplear una columna temporal tiene el objeto principal de facilitar el entendimiento del ejemplo, aunque en este caso, tambin mejora el rendimiento y reduce el tiempo de ejecucin del script, veamos por que: La descarga el html de la pgina toma cierto tiempo, debido a que CSV Robot debe acceder a la web, y descargar el html de la pgina, y dependiendo de la congestin de la red, la velocidad de conexin que disponemos, y otros factores, esto puede tomar mas o menos tiempo. Si descargramos por ejemplo el html de la pgina directamente en la columna Nombre, y luego procesamos esa columna para extraer la informacin necesaria al nombre del producto, luego de obtenido el nombre del producto, el contenido original descargado de la pagina se habra destruido, y lo necesitamos nuevamente para extraer la informacin de precio, lo cual nos obligara a descargar nuevamente el html completo en la columna precio, y luego procesar nuevamente, con lo cual las demoras originadas del acceso a la web se duplican. El empleo de una columna temporal, nos permite realizar una nica descarga, y disponer de esa informacin para extraer todo lo que nos interesa. Finalmente, la columna temporal se eliminar para evitar que aparezca en el archivo de salida. Ahora, procederemos a extraer la informacin de Nombre del producto. Para ello, veamos nuevamente la estructura de la pgina html para definir que parmetros emplear en el proceso EXTRAER_TEXTO para recuperar la informacin til: .Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 43

    Aqu tenemos el inconveniente de que las partes de texto coloreadas en rojo cambian entre distintos productos. Lo que se mantiene es lo que est en azul. Lo que a primera vista parece mas lgico para extraer el nombre del producto sera definir el proceso EXTRAER_TEXTO de forma que extraiga el texto contenido entre > y : .Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB. con lo cual, el resultado de la extraccin sera Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB. Se puede hacer de esta manera, pero lo mas probable es que no resulte de la forma esperada. Por que?: La etiqueta se emplea en html para definir un titulo de cierto tamao, y es muy probable que el formato >TEXTO se encuentre varias veces en la misma pgina. Si intentamos extraer informacin de una pgina completa html solo definiendo que la informacin est contenida entre > y , el proceso recuperar el primer texto que encuentre entre esas etiquetas, y es muy probable que el resultado no sea lo que estamos buscando. Para que el proceso tenga xito, debemos hacer la bsqueda en varias etapas, para acercarnos a la informacin que nos interesa y evitar errores. La etiqueta tambin es muy comn, por lo que si especificamos la extraccin entre

  • Manual CSV Robot v1.0 - Rev A

    Pagina 44

    2 El resultado de la extraccin se almacena en la columna Nombre del registro de SALIDA. Como la columna no existe hasta el momento, en este paso tambin se crea la misma 3 y 4 El texto a extraer es el que se encuentra entre Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB Que an no es lo que estamos buscando. Nuevamente, a primera impresin parecera que lo lgico ahora fuera realizar una segunda extraccin > y , entonces aadimos el siguiente proceso: (1) TEXTO = "" (2) COLUMNA = "Nombre" (3) TAG_INICIO = ">" (4) TAG_FINAL = "" Aqu estamos definiendo: 1- El texto a procesar se encuentra en la columna Nombre del registro de SALIDA (columna que fue destino del primer proceso de extraccin de texto). 2 El resultado de la extraccin se almacena en la misma columna Nombre del registro de SALIDA. 3 y 4 El texto a extraer es el que se encuentra entre > y De este proceso, nosotros pensaramos recuperar: Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB

  • Manual CSV Robot v1.0 - Rev A

    Pagina 45

    Pero en realidad obtendramos: (Resultado 2) Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB Porque no obtenemos el nombre el producto? Lo que ocurre es que estamos definiendo como carcter delimitador inicial > y ese carcter delimitador, en el resultado previo obtenido (Resultado 1), aparece una vez antes del nombre del producto (Resultado 1) sourceindex="128" siber__q92dpb7seovvtbh5__vptr="11a2f20">Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB Por ello estamos obteniendo el texto en azul. Esto nos obliga a incorporar una tercera extraccin de texto: (1) TEXTO = "" (2) COLUMNA = "Nombre" (3) TAG_INICIO = ">" (4) TAG_FINAL = "" Aqu estamos definiendo: 1- El texto a procesar se encuentra en la columna Nombre del registro de SALIDA. 2 El resultado de la extraccin se almacena en la misma columna Nombre del registro de SALIDA. 3 y 4 El texto a extraer es el que se encuentra entre > y . Nota importante: Recordar que si se define TAG_INICIO= y TAG_FINAL=NNN, el proceso recupera la porcin de informacin definida entre el COMIENZO DEL TEXTO, y el delimitador final NNN. Si en cambio, se define TAG_INICIO=NNN y TAG_FINAL=, el proceso recupera la porcin de informacin definida desde la primera aparicin de NNN en el texto, y a partir de all, recupera todo el texto restante. En este caso, como el resultado del proceso 2 de extraccin es: (Resultado 2) Ramos W19 V2.0 Tablet PC Android 4.0.3 Cortex A9 Dual Camera 8GB A nosotros nos interesa recuperar desde el carcter > hasta el final del texto. Este ultimo proceso, nos retorna el Nombre limpio del producto en la columna Nombre.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 46

    Recapitulando, la secuencia de procesos para obtener desde la pgina completa de producto, descargada en la columna TEMP_HTML, la porcin de informacin referente al nombre del producto en la columna Nombre es la siguiente: TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = "" TAG_FINAL = "" TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ">" TAG_FINAL = "" Ahora, para extraer el precio del producto: $125.00 Es una tarea mas sencilla, que se puede ejecutar en un proceso nico de extraccin: (1) TEXTO = "" (2) COLUMNA = "Precio" (3) TAG_INICIO = "" (4) TAG_FINAL = "" Aqu estamos definiendo: 1- El texto a procesar se encuentra en la columna TEMP_HTML del registro de SALIDA (columna que fue creada previamente por el proceso DESCARGAR_HTML). Aqu se observa la utilidad de emplear una columna temporal para almacenar el html de la pgina y extraer la informacin necesaria sin destruir su contenido, a fin de optimizar el tiempo de procesamiento. 2 El resultado de la extraccin se almacena en la columna Precio del registro de SALIDA. Como la columna no existe hasta el momento, en este paso tambin se crea la misma 3 y 4 El texto a extraer es el que se encuentra entre y aqu tambin aplica la necesidad de anteponer \ a todas las comillas dobles que forman parte del valor del parmetro TAG_.

  • Manual CSV Robot v1.0 - Rev A

    Pagina 47

    Este proceso, luego de ejecutarse retornar $125.00 en la columna Precio del registro de salida. Nota: Si necesitramos el precio sin el signo $, podramos emplear TAG_INICIO = "" para extraer despus del signo $. Ya disponemos del nombre del producto en la columna Nombre y el precio en la columna Precio, pero aun nos falta el ultimo paso, que consiste en eliminar la columna TEMP_HTML que ahora no es necesaria y no queremos que aparezca en el archivo de SALIDA: COLUMNA = "TEMP_HTML" El script completo del ejemplo 5, es el siguiente: ; Parametros de Configuracion ; --------------------------------------------------------------- ARCHIVO_ENTRADA_1 = "Links.txt" ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- COLUMNA = "ID" VALOR = "" COLUMNA = "TEMP_HTML" LINK = "" TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ""

  • Manual CSV Robot v1.0 - Rev A

    Pagina 48

    TAG_FINAL = "" TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ">" TAG_FINAL = "" TEXTO = "" COLUMNA = "Precio" TAG_INICIO = "" TAG_FINAL = "" COLUMNA = "TEMP_HTML"

  • Manual CSV Robot v1.0 - Rev A

    Pagina 49

    5.2 Proceso CREAR_DIRECTORIO Este proceso es otro proceso muy simple que proporciona CSV Robot, y muy til para web scraping. Este proceso recibe como parmetro NOMBRE_DIRECTORIO, que como siempre puede ser en forma textual o empleando direccionamiento de variables, y crea una subcarpeta o subdirectorio con ese nombre en la carpeta donde actualmente se encuentra el script que se esta ejecutando. 5.2.1 Ejemplo 7 Creacin de directorios Este ejemplo de puede encontrar en Ejemplos\Ejemplo7\Script.txt Este ejemplo consiste en una ampliacin del ejemplo 6. Deseamos, adems de haber obtenido la informacin de los productos que nos interesaban de la tienda online, crear en la misma carpeta en la que se encuentra el script, un directorio por cada producto. Emplearemos como nombre del directorio el ID del producto. Script (ampliacin de ejemplo 6): .. .. .. NOMBRE_DIRECTORIO = "" COLUMNA = "TEMP_HTML"

    Se ha insertado este proceso antes de eliminar la columna TEMP_HTML por cuestiones de mantener el orden. Luego de ejecutar este script se obtiene Salida.txt con ID, nombre y precio de cada producto de inters, y un directorio por cada ID procesado, es decir, se han creado 3 nuevos subdirectorios: Producto001 Producto002 Producto003

  • Manual CSV Robot v1.0 - Rev A

    Pagina 50

    5.3 Proceso CREAR_ARCHIVO Este proceso permite crear un archivo de texto, y almacenar en dicho archivo el contenido de una columna de un registro. Los parmetros requeridos por este proceso son: NOMBRE_DIRECTORIO = DDD - Obligatorio, es el directorio en el cual se crear el archivo. Si se especifica como valor del parmetro, el archivo se creara en el mismo directorio del script. NOMBRE_ARCHIVO = AAA - Obligatorio, indica el nombre que se le asignar al archivo creado CONTENIDO_ARCHIVO = CCC - Obligatorio, indica el contenido que se almacenar en el archivo creado. Hay que recordar que todos estos parmetros se pueden indicar textualmente, por ejemplo:

    NOMBRE_DIRECTORIO = "Data" NOMBRE_ARCHIVO = "Archivo.txt" CONTENIDO_ARCHIVO = "Test"

    . Lo cual no tiene mucho sentido, porque en cada ciclo de ejecucin, se crear el mismo archivo Archivo.txt, con el mismo contenido Test, y en el mismo directorio Data, por lo cual al terminar la ejecucin del script, se encontrar un nico archivo creado, O se puede emplear la sintaxis de direccionamiento indirecto como se ver en el ejemplo: 5.3.1 Ejemplo 8 Creacin de archivos Este ejemplo es una continuacin del ejemplo 7. Vamos a ampliar el ejemplo, ahora descargando la descripcin completa de cada producto desde la pgina web, pero a esa descripcin descargada la almacenaremos en el directorio del producto (creado en el ejemplo 7) en un archivo llamado descripcin.html Primero veamos como descargamos la descripcin. Si entramos a alguno de los productos de la pgina (emplearemos la misma direccin de ejemplo que hemos empleado hasta el momento): http://www.e-crazydeals.com/store/index.php/ramos-w19-v2-0-tablet-pc-android-4-0-3-cortex-a9-dual-camera-8gb.html Y empleamos la funcin Inspeccionar Elemento de google chrome para ver la estructura de la pgina, podemos observar que la descripcin del producto es una tabla html de la forma:

  • Manual CSV Robot v1.0 - Rev A

    Pagina 51

    Siempre es recomendable, si vamos a descargar informacin de varias pginas, recorrer cada una de ellas y verificar cuales son las estructuras html que se repiten en todas, para a partir de ellas, armar los procesos de extraccin y asegurarnos de que podremos recuperar la informacin sin importar a qu pgina de producto ingresamos. En este caso, es sencillo porque esta es la nica tabla que posee la pgina. El proceso de extraccin para esta tabla es el siguiente: (1) TEXTO = "" (2) COLUMNA = "TEMP_DESCRIPCION" (3) TAG_INICIO = "

  • Manual CSV Robot v1.0 - Rev A

    Pagina 52

    1- El directorio en el cual se creara el archivo esta en la columna ID del registro ENTRADA_1 (Recordemos que el proceso CREAR_DIRECTORIO crea un directorio previamente con ese nombre, por lo que se va a crear para cada producto, un directorio propio, y dentro de ese directorio, un archivo. 2 El nombre del archivo que se va a crear dentro del directorio del producto siempre es Descripcion.html 3 El contenido del archivo, es la tabla recuperada en la columna TEMP_DESCRIPCION del registro SALIDA Al ejecutar este proceso, obtenemos un archivo Descripcion.html creado en el directorio con nombre del ID de cada producto. Finalmente, no hay que olvidar eliminar la columna TEMP_DESCRIPCION antes de terminar el script COLUMNA = "TEMP_DESCRIPCION" Esta es la trascripcin completa del script del ejemplo 8. Se han resaltado con color los procesos aadidos para este ejemplo: ; Parametros de Configuracion ; --------------------------------------------------------------- ARCHIVO_ENTRADA_1 = "Links.txt" ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- ;Copiar columna ID desde ENTRADA_1 a SALIDA ; -------------------------------------- COLUMNA = "ID" VALOR = "" ; Descargar HTML empleando como link la columna ; Link de ENTRADA_1 ; El HTML descargado se almacena en la columna ; TEMP_HTML de SALIDA ; -------------------------------------- COLUMNA = "TEMP_HTML" LINK = ""

  • Manual CSV Robot v1.0 - Rev A

    Pagina 53

    ; Extraer el nombre del producto del ; html descargado ; -------------------------------------- TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = "" TAG_FINAL = "" TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ">" TAG_FINAL = "" ; Extraer el Precio del producto del html ; descargado a la columna "Precio" ; -------------------------------------- TEXTO = "" COLUMNA = "Precio" TAG_INICIO = "" TAG_FINAL = "" ; Extraer descripcion del producto del html ; descargado a la columna "TEMP_DESCRIPCION" ; -------------------------------------- TEXTO = "" COLUMNA = "TEMP_DESCRIPCION" TAG_INICIO = "

  • Manual CSV Robot v1.0 - Rev A

    Pagina 54

    NOMBRE_DIRECTORIO = "" NOMBRE_DIRECTORIO = "" NOMBRE_ARCHIVO = "Descripcion.html" CONTENIDO_ARCHIVO = "" ; Eliminar columna TEMP_HTML ; -------------------------------------- COLUMNA = "TEMP_HTML" ; Eliminar columna TEMP_DESCRIPCION ; -------------------------------------- COLUMNA = "TEMP_DESCRIPCION"

  • Manual CSV Robot v1.0 - Rev A

    Pagina 55

    5.4 Proceso DESCARGAR_ARCHIVO Este proceso permite descargar un archivo al disco desde una direccin proporcionada como parmetro. Los parmetros requeridos por este proceso son: NOMBRE_DIRECTORIO = DDD - Obligatorio, es el directorio en el cual se guardar el archivo descargado. Si se especifica como valor del parmetro, el archivo se creara en el mismo directorio del script. NOMBRE_ARCHIVO = AAA - Obligatorio, indica el nombre que se le asignar al archivo descargado. Si se proporciona como valor, el archivo se guardar con su nombre original LINK = LLL - Obligatorio, indica el link del cual descargar el archivo 5.4.1 Ejemplo 9 Descarga de archivos Este ejemplo es una continuacin del ejemplo 8. Vamos a ampliar el ejemplo, ahora descargando la imagen principal de cada producto desde la pgina web Primero veamos como descargamos la imagen. Si entramos a alguno de los productos de la pgina (emplearemos la misma direccin de ejemplo que hemos empleado hasta el momento): http://www.e-crazydeals.com/store/index.php/ramos-w19-v2-0-tablet-pc-android-4-0-3-cortex-a9-dual-camera-8gb.html Y empleamos la funcin Inspeccionar Elemento de google chrome para ver la estructura de la pgina, podemos observar que la imagen del producto esta definida: La parte en rojo es la que nos interesa extraer, y la parte en azul son los elementos que nos permiten identificar la seccin de texto como nica dentro de toda la pgina. El proceso de extraccin para esta imagen se hace en dos partes, la primera de ellas: (1) TEXTO = "" (2) COLUMNA = "TEMP_IMAGEN" (3) TAG_INICIO = "

  • Manual CSV Robot v1.0 - Rev A

    Pagina 56

    2 El resultado de la extraccin se almacenar en una columna temporal TEMP_IMAGEN del registro SALIDA. Se emplea una columna temporal porque necesitamos un almacenamiento para el link, y luego emplearemos el link para descargar el archivo. Esta columna se eliminar antes de terminar el script 3 y 4 El texto a extraer es el que se encuentra entre

  • Manual CSV Robot v1.0 - Rev A

    Pagina 57

    Finalmente, no hay que olvidar eliminar la columna TEMP_IMAGEN antes de terminar el script COLUMNA = "TEMP_IMAGEN" Esta es la transcripcin completa del script del ejemplo 9. Se han resaltado con color los procesos aadidos para este ejemplo: ; Parametros de Configuracion ; --------------------------------------------------------------- ARCHIVO_ENTRADA_1 = "Links.txt" ARCHIVO_SALIDA = "Salida.txt" ; LISTA DE PROCESOS ; --------------------------------------------------------------- ;Copiar columna ID desde ENTRADA_1 a SALIDA ; -------------------------------------- COLUMNA = "ID" VALOR = "" ; Descargar HTML empleando como link la columna ; Link de ENTRADA_1 ; El HTML descargado se almacena en la columna ; TEMP_HTML de SALIDA ; -------------------------------------- COLUMNA = "TEMP_HTML" LINK = "" ; Extraer el nombre del producto del ; html descargado ; -------------------------------------- TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = "

  • Manual CSV Robot v1.0 - Rev A

    Pagina 58

    TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ">" TAG_FINAL = "" TEXTO = "" COLUMNA = "Nombre" TAG_INICIO = ">" TAG_FINAL = "" ; Extraer el Precio del producto del html ; descargado a la columna "Precio" ; -------------------------------------- TEXTO = "" COLUMNA = "Precio" TAG_INICIO = "" TAG_FINAL = "" ; Extraer descripcion del producto del html ; descargado a la columna "TEMP_DESCRIPCION" ; -------------------------------------- TEXTO = "" COLUMNA = "TEMP_DESCRIPCION" TAG_INICIO = "

  • Manual CSV Robot v1.0 - Rev A

    Pagina 59

    ; Crear directorio y nombrarlo con el valor de ; la columna ID de ENTRADA_1 ; -------------------------------------- NOMBRE_DIRECTORIO = "" ; Crear archivo con Descripcion.html, con el ; contenido de la columna TEMP_DESCRIPCION, ; en el directorio creado previamente ; -------------------------------------- NOMBRE_DIRECTORIO = "" NOMBRE_ARCHIVO = "Descripcion.html" CONTENIDO_ARCHIVO = "" ; Descargar archivo desde el link indicado en ; TEMP_IMAGEN, guardarlo en el directorio creado ; previamente, y con nombre Img_principal.jpg ; -------------------------------------- NOMBRE_DIRECTORIO = "" NOMBRE_ARCHIVO = "Img_principal.jpg" LINK = "" ; Eliminar columna TEMP_HTML ; -------------------------------------- COLUMNA = "TEMP_HTML" ; Eliminar columna TEMP_DESCRIPCION ; -------------------------------------- COLUMNA = "TEMP_DESCRIPCION" ; Eliminar columna TEMP_IMAGEN ; -------------------------------------- COLUMNA = "TEMP_IMAGEN"

  • Manual CSV Robot v1.0 - Rev A

    Pagina 60

    6. Procesos Avanzados 6.1 Proceso EXTRAER_ARRAY_DESDE_TEXTO Seguramente, al conocer el proceso EXTRAER_TEXTO_DESDE_TEXTO, se habr preguntado: por que ese nombre? Por que no llamarlo simplemente EXTRAER_TEXTO, que refleja perfectamente la funcin