Cargando



Python - HTMLParser

En este tutorial veremos como realizar este proceso del HTMLParser y además veremos otros detalles del proceso para así entender mejor su funcionamiento.


feb 02 2014 05:36
Profesional
Al momento de realizar trabajos con los parser en Python es recomendable que si trabajamos con documentos HTML utilizar el estándar XHTML, ya que este último es más estricto a la hora de manejar las etiquetas de apertura y cierre de elementos, con ello podemos realizar programas de forma más sencilla que puedan interpretar esto.

En Python tenemos disponible HTMLParser, esta no debe ser confundida con la clase del mismo nombre del módulo htmllib, ya que el primero forma parte de la librería estándar, cuando obtenemos un documento de Tidy podemos utilizar HMTLParser para poder recorrer su contenido.

Utilizando HTMLParser

Utilizar el HTMLParser, realmente significa hacer subclases de él, de forma que podamos sobrescribir los métodos a nuestra conveniencia y así poder cumplir nuestros requerimientos, veamos a continuación un listado de los métodos principales que obtenemos al utilizar HTMLParser.
  • handle_starttag(tag, attrs): Cuando una etiqueta de inicio es encontrada attrs es una secuencia de pares (nombre, valor).
  • handle_startendtag(tag, attrs): Se utiliza para etiquetas vacías. Por defecto maneja el inicio y el cierre de forma separada.
  • handle_endtag(tag): Se utiliza cuando se encuentra una etiqueta de cierre.
  • handle_data(data): Se utiliza cuando encontramos data textual.
  • handle_charref(ref): Se utiliza cuando trabajamos con referencias de caracteres de la forma &#ref;.
  • handle_entityref(name): Lo utilizamos cuando tenemos referencias a entidades de la forma &name;.
  • handle_comment(data): Solo es llamado cuando existe contenido comentado.
  • handle_decl(decl): Se utiliza para las declaraciones de la forma <!...>.
  • handle_pi(data): Se utiliza para procesar instrucciones.
Una vez que ya hemos visto los métodos principales del HTMLParser, vamos a continuación a ver una imagen con un ejemplo de código y luego explicaremos en que consiste la misma:



Lo primero que notamos es que para este Screen Scraping no vamos a utilizar Tidy, esto es debido a que el HTML que vamos a inspeccionar no está mal formado, luego vemos que lo primero que declaramos son unas variables booleanas con las cuales llevaremos el control de si estamos dentro de un elemento H4 o dentro de un elemento de enlace o link.

Tenemos algo en particular con el método handle_data, como estamos en un ambiente de la vida real debemos prepararnos para los escenarios más complejos y con esto nos referimos a que como es casi seguro que no obtendremos la información necesaria a la primera llamada, preparamos este método para poder obtenerla por partes, una vez que obtenemos todo lo que hacemos es unir los datos.

La acción de nuestro programa empieza cuando llamamos al método feed() al cual le pasamos el texto que es el contenido de la página web que obtenemos con el método urlopen() y cuando todo esto ha sido procesado procedemos a llamar al método close().

Finalmente con esto logramos un programa de Screen Scraping mas legible que utilizando expresiones regulares y un poco más robusto en el aspecto que no nos limitamos a estructuras fijas, con ello podremos obtener nuestra información correctamente.

Con esto finalizamos nuestro tutorial de HTMLParser, cómo podemos ver existen muchas formas de llegar a estas soluciones, para así obtener la información de una página web.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X