ESOFT 3 Nice Screen Scraper: A simple scraper



Documentos relacionados
ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client

ESOFT 3 Nice Screen Scraper. Héctor López Sacanell hlopez1@alumnes.udl.cat

Se ha confeccionado una aplicación sencilla para poder probar el interfaz de gestión explotación de MEGA, Modelo Estandarizado de Gestión de Agua.

Insertar Estadísticas de Google Analytics. Tutorial

XML para FP : Introducción

E Manual de usuario. : Versión: 0.1 Fecha: 05/02/2013 Autor: Carlos Ors Carlos.ors@tecsidel.es

Escudo Movistar Guía Rápida de Instalación Dispositivos Symbian

Práctica de introducción a

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS

Manual de uso. Aula Digital Santillana. (Versión tablet)

Manual de instalación Actualizador masivo de Stocks y Precios

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

Redes de área local: Aplicaciones y servicios WINDOWS

PRESENTACIÓN TELEMÁTICA DE CUENTAS ANUALES

1 Introducción a XML

SEGUNDA PARTE: DOM y jquery

Figura 4.6: Prototipo de la pantalla de inicio.

GENERACIÓN Y CONSTRUCCIÓN DE DOCUMENTOS XML

Software Criptográfico FNMT-RCM

MANUAL PARA INCLUIR EL MOTOR DE RESERVAS EN LA WEB DEL ESTABLECIMIENTO

T A B L A S D I N Á M I C A S TABLAS DINÁMICAS

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

Manual de NVU Capítulo 5: Las hojas de estilo

SERVIDOR DNS DINÁMICO EN WINDOWS 2000/2003 SERVER.

La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.

Manual de Usuario - SDI - Seguridad en Datos de Investigación. Automatización de Buenas Prácticas en Bases de Datos de Investigación

RemitePIN: Nuevo procedimiento de firma electrónica para las aplicaciones de captura de las Oficinas Virtuales de Coordinación Financiera.

Escudo Movistar Guía Rápida de Instalación Para Windows

Detectar y solucionar infecciones en un sitio web

Manual para la utilización de PrestaShop

RESOLUCIÓN DE ERRORES EN MOODLE CAMPUS VIRTUAL-BIRTUALA UPV-EHU

TUTORIAL PHP WEBQUEST

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

Programación Aplicada II Ing. Héctor Abraham Hernández

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual práctico de la Oficina Virtual

Recuva funciona muy bien, siempre y cuando se cumplan dos factores fundamentales que son:

Configuración servidor Tomcat

Manual de Introducción a SIMULINK

Encuestas en Google. Primeros pasos

Manual CMS Mobincube

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. Directorio Activo

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

TARIFAS DE VENTA Y DESCUENTOS

Carteleras. Elaborar una agenda de conciertos y actividades musicales

Personal Broker v.4.0.5

Cómo crear un libro en Moodle?

La elección de Blogger como la plataforma o lugar donde

Manual de usuario de Solmicro BI. Página 1

Opciones Bandeja de Entrada Workflow. Mantenimiento Proyecto Génesis. Universidad Complutense de Madrid

FICHERO DE AYUDA DEL PROGRAMA Q9

VAST: Manual de usuario. Autores: Francisco J. Almeida-Martínez Jaime Urquiza-Fuentes

Agregar un botón en la llamada de servicio que cree una factura.

Una App para Facebook

Copyright 2015 Pepa Cobos. Todos los derechos reservados.

Resumen de la Tesina. Autor: Adrià Batet López. Tutor: Víctor Pascual Ayats

Taller Práctico Creación de un LO IMS/SCORM

1 DISEÑO WEB de ANCHO FIJO con 2 COLUMNAS FLOTANTES

PRÁCTICA FINAL TECNOLOGÍA MULTIMEDIA 3 DE JUNIO DE ENDIAN LIN [Dirección de la compañía]

PASARELA DE PAGO SERMEPA WOOCOMMERCE

Manual de Formulario. C/ Salado, 11. Local Sevilla


Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014

Elastix Web Services (WSDL) Manual de Usuario

H E R R A M I E N T A S D E A N Á L I S I S D E D A T O S HERRAMIENTAS DE ANÁLISIS DE DATOS

Cómo gestionar menús en Drupal 7

Aplicación informática de Optimización de Facturas Eléctricas (O.F.E)

Manual de ayuda para crear y gestionar Tareas, como actividad evaluable

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

Marta Soler Tel: Fax: TUTORIAL DEL GESTOR DE CONTENIDOS DOTNETNUKE

Ministerio de Educación. Diseño de Presentaciones en la Enseñanza. Módulo 9: Imprimir

Instalación del Admin CFDI

Internet Information Server

Redes II Universidad Nacional de Jujuy Facultad de Ingeniería Carrera: APU 2008

Tarea 1 Diseño Web en entorno cliente José Luis Comesaña

1.- INTRODUCCIÓN 2.- PARÁMETROS

Dossier de prácticas

Junio de 2014 MINISTERIO DE AGRICULTURA, ALIMENTACIÓN Y MEDIO AMBIENTE SUBSECRETARIA DIRECCIÓN GENERAL DE SERVICIOS

GUÍA DE UTILIZACIÓN DEL CONVERSOR GRAMMATA

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Manual de Creación de Boletín

Manual Office 365. acens Manuales

Curso Excel Básico - Intermedio

Ministerio de Educación,Cultura y Deporte. Aulas en Red. Windows. Módulo 2: Servicios Básicos. DNS

Kaldeera Advanced Forms 2009 Guía del usuario

MANUAL WINDOWS MOVIE MAKER. Concurso de Gipuzkoa

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE USUARIO CMS- PLONE

UNIDAD DIDACTICA 3 USUARIOS Y GRUPOS EN REDES WINDOWS 2003 SERVER II

Instalación de Tomcat7 en Ubuntu

Control de objetivos y alertas mediante Tablas Dinámicas

Copia de Seguridad en windows

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

MANUAL DE FORMULARIOS WEB. Informazio Zerbitzua Servicio de Información

Transformación de documentos XML con

UNIVERSIDAD DE SALAMANCA

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

Transcripción:

ESOFT 3 Nice Screen Scraper: A simple scraper Héctor López Sacanell hlopez1@alumnes.udl.cat 3 de diciembre de 2009 1. Introducción El objetivo de esta segunda entrega es la de crear una primera versión de la aplicación final que incluya el motor básico para obtener el código HTML de una web para posteriormente obtener la información deseada y guardarla en formato XML. La web que se ha utilizado en esta entrega es de la http://servicaixa. com, y más concretamente nos hemos centrado en la obtención de las películas en cartelera de una ciudad elegida por el usuario (ver Figura 1). Figura 1: servicaixa.com: web de donde sacaremos la información 1

2. Requisitos previos Antes de empezar a trabajar con el parseo de la web, necesitamos definir la estructura de datos que queremos obtener, esto es definir la DTD. Para tal efecto, hemos creado el fichero cartelera.dtd con la siguiente definición: <?xml version="1.0" encoding="utf-8"?> <!ELEMENT cartelera (pelicula)*> <!ATTLIST cartelera ciudad CDATA #REQUIRED> <!ELEMENT pelicula (titulo, enlace, calificacion, director)> <!ELEMENT titulo (#PCDATA)> <!ELEMENT enlace (#PCDATA)> <!ELEMENT calificacion (#PCDATA)> <!ELEMENT director (#PCDATA)> Y esta definición nos obligará a crear un fichero XML resultante que tenga un contenido parecido al que mostramos a continuación: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE cartelera SYSTEM "cartelera.dtd"> <cartelera ciudad="lleida"> <pelicula> <titulo></titulo> <enlace></enlace> <calificacion></calificacion> <director></director> </pelicula> </cartelera> 3. Obtención de la información Para poder obtener el contenido de la web necesitamos proceder de la siguiente manera: 1. Obtener el código HTML de la web elegida (servicaixa.com) 2. Convertir dicho código a XHTML para que el codigo fuente con el que trabajaremos esté bien formado. 3. Aplicar una hoja de estilos XSLT para realizar la transformación adecuada de los elementos deseados y crear el fichero final XML. 2

Para obtener y convertir el código HTML a código bien formado XHTML hemos utilizado la libreria jtidy. Y una vez que tenemos el árbol DOM definido y en memoria procedemos a tratarlo para generar el XML final. 3.1. Diseño de la web Para proceder con el diseño de la hoja de estilos XSLT primero hemos analizado la estructura de la información que queriamos capturar, la cual se puede ver en la siguiente Figura 5. Figura 2: Sección del código HTML a capturar En la cual se puede ver como toda la información está dentro de una tabla, cuyo identificador es id= tablalistado y cada película dentro de un tr con el atributo id definido. Dicha información es la que nos ha servido para identificar el contenido deseado. Si el usuario hace click en la película se realiza una petición AJAX al servidor y se descarga un fichero XML con la información de la película y se carga directamente en el mismo tr. Dicha información también está disponible en formato HTML 1. 1 Esta referencia (link) queremos utilizarla como parte de una ampliación de esta prácti- 3

3.2. Ajustes realizados Con motivo de la amplicación deseada y comentanda en el apartado anterior (3.1), hemos realizado unos ajustes en el árbol DOM generado originalmente. Dichos cambios han sido los de añadir un nuevo elemento dentro del nodo <head>. El nuevo elemento ha sido la etiqueta <base> y cuyo contenido ha sido el de la dirección URL base de la web (http://www.servicaixa.com). Este ajuste ha sido necesario para poder disponer de una URL absoluta que nos identifique la localización física de la descripción completa de la película en cuestión, ya que sino, únicamente dispondríamos de una dirección relativa, y nunca sabríamos el dominio original. Este ajuste se ha realizado utilizando las funcionalidades de XPath. 3.3. Raspado final Con el árbol DOM generado y ajustado a nuestras necesidades, hemos diseñado la hoja de estilos XSLT (servicaixa.xsl) adecuada, para realizar las transformaciones pertinentes en la web original, para generarnos un fichero XML final, con el nombre de la ciudad consultada. En el siguiente bloque de código se muestra parte del contenido XML final correspondiente a la cartelera de Lleida: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE cartelera SYSTEM "cartelera.dtd"> <cartelera ciudad="lleida"> <pelicula> <titulo>amelia</titulo> <enlace>http://www.servicaixa.com/nav/es/cine/amelia/lleida/index.html</enlace> <calificacion/> <director>mira Nair</director> </pelicula> <pelicula> <titulo>celda 211</titulo> <enlace>http://www.servicaixa.com/nav/es/cine/celda_211/lleida/index.html</enlace> <calificacion/> <director>daniel Monzón</director> </pelicula>... </cartelera> ca para obtener dinámicamente dicha información y mostrarla en el fichero XML final. 4

4. Posible amplición Hemos pensado en realizar una posible ampliación al actual contenido añadiendo el contenido completo de la película, cosas como: valoración, cartel, sinopsis, etc. Esta información tambien la proporciona la web de servicaixa.com y además la proporciona en formato HTML y en XML. Cada una de las películas analizadas incluye una referencia (link) a su descripción completa (ver Figura 3), y además incluye una petición AJAX con la definición del XML a utilizar (ver Figura 4), con lo que disponemos de todas las herramientas y elementos para realizarlo. Figura 3: Detalle de la película 5

Figura 4: Fichero XML con el detalle de la película La principal idea es la de crear un nuevo XSLT y ejectura la transformación en cada uno de los elementos película, durante o después del proceso de transformación de la cartelera (está por decidir). Una vez obtengamos el detalle de cada una de las películas, éste se incluirá en el fichero XML. Para ello también tendremos que ampliar la DTD definida. 5. Ejecución Para poder generar nuevos ficheros XML con la cartelera de la ciudad deseada, únicamente se tiene que ejecutar el script run tal y como se muestra en el siguiente ejemplo: $./run lleida linea 554 columna 18 -Error:<numestrellas> falta > al final de la etiqueta linea 554 columna 18 -Error:<numestrellas> no se reconoce! linea 606 columna 18 -Error:<numestrellas> falta > al final de la etiqueta linea 606 columna 18 -Error:<numestrellas> no se reconoce! linea 623 columna 18 -Error:<voto> falta > al final de la etiqueta linea 623 columna 18 -Error:<voto> no se reconoce! XML file generated in: Lleida.xml Como se ve, se han dejado activos los errores producidos por la transformación de HTML a XHTML, para disponer de más información y validar el proceso final. El script recibe por parámetro el nombre de la ciudad tal y como aparece en la URL de servicaixa.com, para lleida es: 6

Figura 5: Ciudad elegida codificada en la URL El script también se puede ejecutar sin parámetros, con lo que obtendrá por defecto al cartelera de Lleida. 6. Código Fuente Todo el código fuente se encuentra disponible en la web del proyecto SimpleNiceScreenScraper en Google code. http://code.google.com/p/nicescreenscraper 7