SlideShare una empresa de Scribd logo
1 de 25
Adaptación de JMeter para la minería de datos
       de estructuras de páginas web.
       Alumno                        Director
Agustín Sabater Piñeiro       Carlos 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

  Fichero XML de fragmentos encontrados por muestra
<?xml version="1.0" encoding="UTF-8"?>
<graphml>
     <graph edgedefault="directed" id="0">
           <node id="-1043487486">
                      <data key="size">2475</data>                           Características
                      <data key="source.code“><![CDATA[<div class=" thing    Fragmento
                id-t3_xu3yr link promoted promotedlink "                     Concordante
                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>
Modelo de representación de fragmentos

  Fichero XML de relaciones entre fragmentos (único)
<?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" />                       Relaciones con
                                    …                                    otros fragmentos
           <edge id="16" source="-1139600470" target="1894481576"        y con las muestras
                       url="www.reddit.com"
                       when="20120820.17.59.10" />
           <edge LevenshteinDistance="786" id="15" node1="-1774026885"
                       node2="847262418" />                              Diferencias
                                    …
                                                                         entre fragmentos
           <edge LevenshteinDistance="172" id="922" node1="-265211993"
                       node2="713539848" />
</graphml>
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   Escasa
              License 1.0

              Apache License Abundante
              2.0

              Apache          Inexistente
              Software
              License
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            Carga de     ¿Apoyo de
                  formados?            procesamiento   comunidad?
Expresiones   Intransigente (o está   Costoso          Cada día a
regulares     contemplado o falla)                     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 Levenshtein
   3. 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.
       Alumno                        Director
Agustín Sabater Piñeiro       Carlos Guerrero Tomé

     ESCUELA POLITÉCNICA SUPERIOR
     UNIVERSITAT DE LES ILLES BALEARS      14-Sep-
                                           12

Más contenido relacionado

Similar a JMeter para minería de datos web

cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxIgor Rodriguez
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVCSebastián Rocco
 
Seminario html5
Seminario html5Seminario html5
Seminario html5UDECI
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos Luis Fernando Aguas Bucheli
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Facescok12v
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño Ijjegonzalezf
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsEsteban Saavedra
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Presentación html5
Presentación html5Presentación html5
Presentación html5aydimdagam
 

Similar a JMeter para minería de datos web (20)

5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web5-Unidad 2: Diseños de Vista-2.2 Para Web
5-Unidad 2: Diseños de Vista-2.2 Para Web
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
SGBD Postgresql
SGBD PostgresqlSGBD Postgresql
SGBD Postgresql
 
HTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas SemanticasHTML5 Nuevas Etiquetas Semanticas
HTML5 Nuevas Etiquetas Semanticas
 
cuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docxcuadro_comparativo_SGBD_top_10.docx (1).docx
cuadro_comparativo_SGBD_top_10.docx (1).docx
 
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScriptFull-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
Full-stack JavaScript: Desarrollo integral de aplicaciones Web con JavaScript
 
ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3ASP.NET MVC Workshop Día 3
ASP.NET MVC Workshop Día 3
 
Html4
Html4Html4
Html4
 
Introducción a ASP.NET MVC
Introducción a ASP.NET MVCIntroducción a ASP.NET MVC
Introducción a ASP.NET MVC
 
Seminario html5
Seminario html5Seminario html5
Seminario html5
 
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos 7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
7-Unidad 2: Diseños de Vista-2.3 Introducción Web Services-Desarrollo Ejemplos
 
Html5
Html5Html5
Html5
 
Jsf Java Server Faces
Jsf   Java Server FacesJsf   Java Server Faces
Jsf Java Server Faces
 
Html4 equipo
Html4 equipoHtml4 equipo
Html4 equipo
 
Patrones de diseño I
Patrones de diseño IPatrones de diseño I
Patrones de diseño I
 
Frameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web GrailsFrameworks de Desarrollo Web Grails
Frameworks de Desarrollo Web Grails
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Presentación html5
Presentación html5Presentación html5
Presentación html5
 
Android basics v3
Android basics v3Android basics v3
Android basics v3
 
Moviweb
MoviwebMoviweb
Moviweb
 

JMeter para minería de datos web

  • 1. Adaptación de JMeter para la minería de datos de estructuras de páginas web. Alumno Director Agustín Sabater Piñeiro Carlos Guerrero Tomé ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep- 12
  • 2. 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.
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 6. 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
  • 7. 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.
  • 8. Modelo de representación de fragmentos Fichero XML de fragmentos encontrados por muestra <?xml version="1.0" encoding="UTF-8"?> <graphml> <graph edgedefault="directed" id="0"> <node id="-1043487486"> <data key="size">2475</data> Características <data key="source.code“><![CDATA[<div class=" thing Fragmento id-t3_xu3yr link promoted promotedlink " Concordante 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>
  • 9. Modelo de representación de fragmentos Fichero XML de relaciones entre fragmentos (único) <?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" /> Relaciones con … otros fragmentos <edge id="16" source="-1139600470" target="1894481576" y con las muestras url="www.reddit.com" when="20120820.17.59.10" /> <edge LevenshteinDistance="786" id="15" node1="-1774026885" node2="847262418" /> Diferencias … entre fragmentos <edge LevenshteinDistance="172" id="922" node1="-265211993" node2="713539848" /> </graphml>
  • 10. 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.
  • 11. Detalles técnicos del proyecto Herramientas de prueba de carga analizadas Licencia Comunidad GUI ¿Ampliable? Common Public Escasa License 1.0 Apache License Abundante 2.0 Apache Inexistente Software License
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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.
  • 16. Detalles técnicos del proyecto XPaths vs Expresiones Regulares ¿Documentos mal Carga de ¿Apoyo de formados? procesamiento comunidad? Expresiones Intransigente (o está Costoso Cada día a regulares contemplado o falla) menos XPaths 2.0 Sin problemas Justo Cada día a más
  • 17. 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')
  • 18. 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 Levenshtein 3. Añadir un visualizador del grafo de resultados
  • 19. 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.
  • 20. Aplicación resultante //div[contains(concat(' ',normalize- space(@class),' '),' link ')]
  • 22. 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
  • 23. 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
  • 24. 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
  • 25. Adaptación de JMeter para la minería de datos de estructuras de páginas web. Alumno Director Agustín Sabater Piñeiro Carlos Guerrero Tomé ESCUELA POLITÉCNICA SUPERIOR UNIVERSITAT DE LES ILLES BALEARS 14-Sep- 12

Notas del editor

  1. Hola, mi nombre es Agustín Sabater Piñeiro, y estoy aquí para hacer la lectura de mi proyecto final de carrera. Tiene por título, “ Adaptación de JMeter para la minería de datos de estructuras de páginas web ” . El proyecto ha sido dirigido por Carlos Guerrero Tomé.
  2. La motivación del proyecto fue la necesidad que tiene Carlos Guerrero de obtener modelos de los fragmentos de contenidos que forman una página web para temas de su tesis. En definitiva poder extraer de una web como esta, información en un formato similar a este. Aquí podemos ver una captura de la página web REDDIT.COM con zonas remarcadas de color rojo, y a la derecha podemos ver un ejemplo del resultado que se desea obtener.
  3. Veamos ahora la estructura que tendrá esta presentación: Primero veremos las herramientas de testing existentes. Pasaremos a comentar los aspectos más importantes del software desarrollado A continuación veremos el modelo de representación de fragmentos de una página web. Luego seguiremos con los detalles técnicos que podemos considerar más relevantes. A continuación veremos una demostración en video del software desarrollado. Como penúltimo punto tratáremos las conclusiones que se han extraído de realizar este proyecto. Y para finalizar repasaremos las posibles líneas de futuro del proyecto.
  4. El contexto del proyecto es construir una herramienta que soluciones, de manera efectiva la necesidad de Carlos Guerrero antes descrita. Para una serie de páginas introducidas por el usuario, los módulos de JMeter implementados se encargan de buscar fragmentos del contenido de las páginas según unas reglas definidas por el propio usuario. Una vez detectados dichos fragmentos, el módulo genera el modelo del contenido de cada página, basado en fragmentos de contenido y relaciones de inclusión entre los distintos fragmentos. Este modelo se encuentra explicado en la documentación, pero es básicamente un grafo acíclico dirigido. El SW desarrollado consigue generar un GRAFO ACÍCLICO DIRIGIDO que contiene información sobre los fragmentos y sus interrelaciones.
  5. Los objetivos con lo que iniciamos el proyecto eran los siguientes. Para empezar debíamos crear un sistema capaz de observar como cambia el contenido de una serie de páginas web. Se pretendía poder comparar tanto muestras temporales, como muestras de diferentes direcciones web. Así mismo, se quería acceder a direcciones web públicas y privadas, que requieran autenticación. Para una serie de páginas introducidas por el usuario, los módulos de JMeter implementados se tienen que encargar de buscar fragmentos del contenido de las páginas según unas reglas definidas por el propio usuario.
  6. Las tareas necesarias para llevar a cabo el proyecto descrito, a grandes rasgos son: Estudiar las herramientas existentes en el mercado Desarrollar el módulo de descargas Desarrollar el módulo de análisis de fragmentos Desarrollar el módulo de relación entre los fragmentos Por último, desarrollar el módulo encargado de realizar el cálculo de similitud entre fragmentos.
  7. La mejor manera para modelar la información la información referente a fragmentos de código, direcciones url, y demás parámetros,
  8. Ahora voy a hablar de los detalles técnicos más relevantes del proyecto, a mi juicio. Lo primero que debimos considerar fue si desarrollar una herramienta desde cero, o bien usar alguna ya existente y ampliable. 2. Primeramente probamos utilizando Expresiones regulares para detectar fragmentos, pero nos dieron muchos problemas por la cantidad de páginas que no están totalmente bien formadas EJEMPLO: Etiquetas &lt;p&gt; sin cerrar, o etiquetas img mal formadas. &lt;img src= “ sasdasd.png ” &gt; 3. Para identificar fragmentos similares se decidió incluir el cálculo de la distancia de Levenshtein . Incluyendo este cálculo en el fichero XML de relaciones, reflejamos el grado de similaridad entre fragmentos.
  9. Analizamos JCrawler, Solex, y JMeter. Decantándonos al final por este último. Por si lo preguntan JCrawler no tiene GUI, y Solex no permite el desarrollo de plugins. Jmeter es una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web. Tiene ventajas como la posibilidad de añadir plugins, es gratuita, open-source, y tiene una gran comunidad detrás del proyecto. Las expresiones regulares nos dieron bastantes dolores de cabeza a la hora de enfrentarnos con documentos mal formados (etiquetas sin cierre). Por eso optamos por cambiar y usar las Xpaths 2.0 que ofrecían juntamente con HTMLunit potencia y facilidad de uso. Para poder medir la diferencia entre dos fragmentos de código, nos decantamos por usar la Distancia de Levenshtein Uno de los requisitos del proyecto era facilitar el desarrollo de nuevas funcionalidades en el proyecto. Eso lo hemos cumplido liberando el código, usando interfaces, y documentando todo el proceso de ampliación de funcionalidad.
  10. Ahora veremos los aspectos más relevantes de la arquitectura del programa JMeter. Para empezar hay que decir que JMETER permite varios modos de ejecución, aunque el más común es usar la interfaz gráfica, además de ser lo que yo recomiendo para la ejecución de este proyecto. JMeter, y este proyecto, están desarrollados 100% en JAVA. La estructura de ficheros es la siguiente: La clase principal se encuentra en la subcarpeta /bin de JMeter. Las clases que usa JMeter se encuentran en la subcarpeta /lib Las extensiones se ubican en /lib/ext Los plugins
  11. Para realizar este proyecto correctamente, fue necesario desarrollar dos plugins del programa JMeter. La decisión de desarrollar dos plugins, se debe a que la comunidad de JMeter tiene esa costumbre para tener ordenados los plugins. Este consejo nos lo dieron en el portal JMeter plugins alojado en code.google.com, así como otros cientos que han hecho posible que esta lectura esté sucediendo.
  12. El primero de los plugins desarrollados es el plugin HTML Downloader. Es un plugin de tipo Listener, muestreador, encargado de recibir los que obtiene los plugins de tipo Requesters. Permite gestionar la lista de descargas obtenidas a partir de la lista del usuario. Descarga cada muestra obtenida en una subcarpeta junto con el código XHTML Así mismo, mantiene un registro de lo sucedido durante su ejecución. Puede ser lanzado las veces que se quiera, manteniendo siempre las muestras anteriores y el registro.
  13. El último de los módulos desarrollados, es el plugin Query Model Analyzer. Es un plugin de tipo post processor. Analiza las muestras obtenidas por HTML Downloader, buscando fragmentos que coincidan con las XPaths introducidas por el usuario. Genera los resultados en ficheros XML en las subcarpetas y en la carpeta principal. Está preparado para admitir nuevos desarrollos.
  14. Jmeter es una herramienta de prueba de carga para analizar y medir el desempeño de una variedad de servicios, con énfasis en aplicaciones web. Tiene ventajas como la posibilidad de añadir plugins, es gratuita, open-source, y tiene una gran comunidad detrás del proyecto. Las expresiones regulares nos dieron bastantes dolores de cabeza a la hora de enfrentarnos con documentos mal formados (etiquetas sin cierre). Por eso optamos por cambiar y usar las Xpaths 2.0 que ofrecían juntamente con HTMLunit potencia y facilidad de uso. Para poder medir la diferencia entre dos fragmentos de código, nos decantamos por usar la Distancia de Levenshtein Uno de los requisitos del proyecto era facilitar el desarrollo de nuevas funcionalidades en el proyecto. Eso lo hemos cumplido liberando el código, usando interfaces, y documentando todo el proceso de ampliación de funcionalidad.
  15. Se llama Distancia de Levenshtein, distancia de edición, o distancia entre palabras, al número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Esté valor es muy útil para realizar comprobaciones entre nodos ligeramente diferentes. El Algoritmo no añade una gran carga de procesamiento. Abierto a nuevos desarrollos
  16. Se llama Distancia de Levenshtein, distancia de edición, o distancia entre palabras, al número mínimo de operaciones requeridas para transformar una cadena de caracteres en otra. Esté valor es muy útil para realizar comprobaciones entre nodos ligeramente diferentes. El Algoritmo no añade una gran carga de procesamiento. Abierto a nuevos desarrollos
  17. El desarrollo de nuevas funcionalidades, o bien la modificación de las actuales, es muy sencillo. Para empezar en el repositorio de GitHub del proyecto Minería de datos con JMeter, encontraremos toda la información y archivos necesarios. El método de modificación simplificado es el siguiente: 1. Descargar la versión 2.6 de JMeter, y todos los archivos del repositorio de GitHub. 2. Desde un IDE, eclipse recomendado, modificar aquello que se quiera modificar, y compilar. (en el GitHub del proyecto existe un manual de ayuda para esta tarea). 3. Volver a arrancar JMeter y testear los cambios.