Adaptación de JMeter para la minería de datos de estructuras de páginas web.
-
Upload
agustin-sabater -
Category
Documents
-
view
549 -
download
3
description
Transcript of Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas
web.
AlumnoAgustín Sabater
Piñeiro
DirectorCarlos Guerrero
Tomé
ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep-12
Motivación
Carlos Guerrero necesitaba una herramienta para crear modelos de los fragmentos de contenidos que forman una página web para temas de su tesis.
Estructura
• Introducción
• Modelo de representación de fragmentos de una página web
• Detalles técnicos relevantes del proyecto
• Demostración
• Conclusiones
• Líneas de futuro
Introducción
Contexto del proyecto
Construir una herramienta que solucione, de manera efectiva, la necesidad de Carlos Guerrero antes descrita.
Problemática que se resuelve
Herramienta capaz de generar un Grafo acíclico dirigido que contenga información sobre los fragmentos y sus interrelaciones.
Introducción
Objetivos
Crear un sistema que permita observar como cambia el contenido de una serie de páginas web.
Se pretende poder comparar tanto entre muestras temporales, como entre muestras de diferentes direcciones.
Debe poder accederse a URLS públicas y que requieran autenticación.
Del código de toda muestra debe buscarse fragmentos que encajen con una serie de consultas indicadas por el usuario.
El sistema debe ser ampliable con futuros desarrollos.
Introducción
Tareas a realizar
•Estudio de las soluciones existentes
•Desarrollo de herramienta de descarga
•Desarrollo de herramienta de análisis de los fragmentos
•Desarrollo de herramienta de relación entre fragmentos
•Desarrollo de herramienta de cálculo de similitud entre fragmentos
Modelo de representación de fragmentos
• La mejor manera de modelar la información es un grafo.
• Usamos un nodo para describir los fragmentos hallados en cada muestra, y otros nodos para describir las relaciones entre fragmentos.
• Tanto los nodos de descripición de fragmentos, como los de relaciones entre nodos, se guardan en ficheros XML.
Modelo de representación de fragmentos
<?xml version="1.0" encoding="UTF-8"?><graphml>
<graph edgedefault="directed" id="0"><node id="-1043487486">
<data key="size">2475</data> <data key="source.code“><![CDATA[<div class=" thing id-t3_xu3yr link promoted promotedlink " onclick="click_thing(this)" data-fullname="t3_xu3yr" data-ups="118" data-downs="370">
…]]></data>
<data key="url">www.reddit.com</data>
<data key="time">20120821.18.59.02</data>
</node>…
</graph></graphml>
Características Fragmento Concordante
Fichero XML de fragmentos encontrados por muestra
Modelo de representación de fragmentos
<?xml version="1.0" encoding="UTF-8"?><graphml>
<graph edgedefault="directed" id="4" /><key attr.name="staring.tag" attr.type="string »
for="node" id="etiqueta" /><edge id="0" source="-1774026885"
target="1894481576" url="www.reddit.com"when="20120820.17.59.10" />
…<edge id="16" source="-1139600470"
target="1894481576" url="www.reddit.com"
when="20120820.17.59.10" /><edge LevenshteinDistance="786" id="15"
node1="-1774026885" node2="847262418" />
…<edge LevenshteinDistance="172" id="922"
node1="-265211993" node2="713539848" /></graphml>
Relaciones con otros fragmentosy con las muestras
Diferencias entre fragmentos
Fichero XML de relaciones entre fragmentos (único)
Detalles técnicos del proyecto
Consideraciones previas
1.Decidir si desarrollar desde cero o seleccionar una herramienta existente y ampliable mediante plugins.
2.Decidir alguna forma para tratar el XHTML y detectar fragmentos.
3.Decidir como identificar fragmentos similares.
Detalles técnicos del proyecto
Herramientas de prueba de carga analizadas
Licencia Comunidad GUI ¿Ampliable?
Common Public License 1.0
Escasa
Apache License 2.0
Abundante
Apache Software License
Inexistente
Detalles técnicos del proyecto
Arquitectura del programa JMeter
•JMeter está organizado por protocolos y funcionalidades.
•Clase principal /bin/ApacheJMeter.jar
•Clases de JMeter /lib/
•Extensiones /lib/ext/
•Incidencias de ejecución /bin/jmeter.log
Detalles técnicos del proyecto
Se han desarrollado dos plugins de JMeter para cumplir los objetivos del proyecto final de carrera.
•HTML Downloader
•Query Model Analyzer
Detalles técnicos del proyecto
HTML Downloader
•Plugin tipo Listener
•Permite gestionar la lista de direcciones web a analizar.
•Descarga cada muestra en una subcarpeta
•Mantiene un registro de la ejecución
•Puede añadir muestras suplementarias
Detalles técnicos del proyecto
Query Model Analyzer
•Plugin tipo Post Processor
•Analiza las muestras descargadas por HTML Downloader
•Generar los resultados del análisis en ficheros XML
•Guarda un fichero de resultados en cada subcarpeta que contenga muestras, y otro fichero XML con las relaciones entre nodos.
•Está preparado para ser ampliado con nuevos tipos de Querys, cálculos de distancias, y demás.
Detalles técnicos del proyecto
XPaths vs Expresiones Regulares
¿Documentos mal formados?
Carga de procesamien
to
¿Apoyo de comunidad?
Expresiones regulares
Intransigente (o está contemplado o falla)
Costoso Cada día a menos
XPaths 2.0 Sin problemas Justo Cada día a más
Detalles técnicos del proyecto
Distancia de Levenshtein
La distancia de Levenshtein entre "casa" y "calle" es de 3 porque se necesitan al menos tres ediciones elementales para cambiar uno en el otro.
casa → cala (sustitución de 's' por 'l')cala → calla (inserción de 'l' entre 'l' y 'a')calla → calle (sustitución de 'a' por 'e')
Detalles técnicos del proyecto
• Abierto a futuros desarrollos• Licencia utilizada Apache License 2.0• Posibles mejoras documentadas:
1. Método de búsqueda de fragmentos (XPath 3.0 …)
2. Cambiar la distancia de Levenshtein3. Añadir un visualizador del grafo de resultados
Detalles técnicos del proyecto
• Abierto a futuros desarrollos
En el repositorio de GitHub del proyecto, [github.com/asabater/Data-mining-with-Jmeter], se
encuentra todo lo necesario para modificar el desarrollo del proyecto.
Método de modificación• Descargar la versión 2.6 de JMeter, y los archivos del
proyecto del repositorio en GitHub.• Desde un IDE, Eclipse por ejemplo, modificar las clases y
compilar.• Volver a arrancar JMeter para ver los cambios realizados.
Aplicación resultante
//div[contains(concat(' ',normalize-space(@class),' '),' link ')]
Demostración
Conclusiones
• El SW desarrollado cumple satisfactoriamente el objetivo de poder observar como va cambiando el contenido de una serie de páginas web, tanto temporalmente como entre aquellas muestras que provengan de diferentes direcciones.
• Al desarrollar para la plataforma JMeter, el objetivo de permitir acceso a URLs y publicas está cubierto.
• El objetivo de poder buscar fragmentos dentro de las muestras descargadas se cumple gracias al uso de las XPaths.
• Carlos Guerrero, considera que su necesidad ha quedado cubierta con el SW desarrollado
Conclusiones
• Las versiones de JMeter son numerosas y cada vez más incompatibles entre ellas.• Es muy difícil asegurar la retrocompatiblidad
• JMeter con cada versión es más pesado
• Es muy gratificante ver como no hay imposible con empeño y trabajo duro
Líneas de futuro
• Cambiar XPath 2.0 por un sistema más avanzado (por ejemplo XPath 3.0)
• Cambiar el cálculo de la Distancia de Levenshtein por otra medida más adecuada
• Modificar el comportamiento del plugin para que vaya generando XMLs con resultados a medida que descarga las muestras
• Añadir un visualizador de ficheros de resultados
Adaptación de JMeter para la minería de datos de estructuras de páginas
web.
AlumnoAgustín Sabater
Piñeiro
DirectorCarlos Guerrero
Tomé
ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep-12