Pitón

Analizando HTML usando Python

Analizando HTML usando Python
Analizar HTML es una de las tareas más comunes que se realizan hoy en día para recopilar información de los sitios web y extraerla para diversos fines, como establecer el rendimiento del precio de un producto a lo largo del tiempo, reseñas de un libro en un sitio web y mucho más. Existen muchas bibliotecas como BeautifulSoup en Python que abstrae tantos puntos dolorosos al analizar HTML, pero vale la pena saber cómo funcionan realmente esas bibliotecas debajo de esa capa de abstracción.

En esta lección, eso es lo que pretendemos hacer. Descubriremos cómo se pueden extraer los valores de diferentes etiquetas HTML y también anularemos la funcionalidad predeterminada de este módulo para agregar algo de lógica propia. Haremos esto usando el HTMLParser clase en Python en html.analizador módulo. Veamos el código en acción.

Mirando la clase HTMLParser

Para analizar texto HTML en Python, podemos hacer uso de HTMLParser clase en html.analizador módulo. Veamos la definición de clase para el HTMLParser clase:

clase html.analizador.HTMLParser (*, convert_charrefs = True)

La convert_charrefs campo, si se establece en True hará que todas las referencias de caracteres se conviertan a sus equivalentes Unicode. Solo el guión / estilo los elementos no se convierten. Ahora, intentaremos comprender cada función de esta clase para comprender mejor lo que hace cada función.

Subclasificación de la clase HTMLParser

En esta sección, subclasificaremos la clase HTMLParser y veremos algunas de las funciones que se llaman cuando los datos HTML se pasan a la instancia de la clase. Escribamos un script simple que haga todo esto:

desde html.parser importar HTMLParser
clase LinuxHTMLParser (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Etiqueta de inicio encontrada:", etiqueta)
def handle_endtag (self, tag):
print ("Etiqueta final encontrada:", etiqueta)
def handle_data (self, data):
imprimir ("Datos encontrados:", datos)
analizador = LinuxHTMLParser ()
analizador.alimentación("
'

Módulo de análisis de HTML de Python


')

Esto es lo que obtenemos con este comando:

Subclase Python HTMLParser

Funciones HTMLParser

En esta sección, trabajaremos con varias funciones de la clase HTMLParser y veremos la funcionalidad de cada una de ellas:

desde html.parser importar HTMLParser
desde html.entidades importan name2codepoint
clase LinuxHint_Parse (HTMLParser):
def handle_starttag (self, tag, attrs):
print ("Etiqueta de inicio:", etiqueta)
para attr en attrs:
print ("attr:", attr)
def handle_endtag (self, tag):
print ("Etiqueta final:", etiqueta)
def handle_data (self, data):
imprimir ("Datos:", datos)
def handle_comment (self, data):
imprimir ("Comentario:", datos)
def handle_entityref (self, name):
c = chr (name2codepoint [nombre])
print ("Nombrado ent:", c)
def handle_charref (self, name):
si nombre.empieza con ('x'):
c = chr (int (nombre [1:], 16))
demás:
c = chr (int (nombre))
print ("Num ent:", c)
def handle_decl (self, data):
imprimir ("Decl:", datos)
analizador = LinuxHint_Parse ()

Con varias llamadas, alimentemos datos HTML separados a esta instancia y veamos qué resultado generan estas llamadas. Empezaremos con un simple DOCTYPE cuerda:

analizador.alimentación(''"http: // www.w3.org / TR / html4 / estricto.dtd "> ')

Esto es lo que obtenemos con esta llamada:

Cadena DOCTYPE

Probemos ahora con una etiqueta de imagen y veamos qué datos extrae:

analizador.alimentación('El logo de Python')

Esto es lo que obtenemos con esta llamada:

Etiqueta de imagen HTMLParser

A continuación, probemos cómo se comporta la etiqueta de secuencia de comandos con las funciones de Python:

analizador.alimentación('')
analizador.alimentación('')
analizador.feed ('# python color: green')

Esto es lo que obtenemos con esta llamada:

Etiqueta de secuencia de comandos en htmlparser

Finalmente, también pasamos comentarios a la sección HTMLParser:

analizador.alimentación(''
'')

Esto es lo que obtenemos con esta llamada:

Analizando comentarios

Conclusión

En esta lección, vimos cómo podemos analizar HTML usando la propia clase HTMLParser de Python sin ninguna otra biblioteca. Podemos modificar fácilmente el código para cambiar la fuente de los datos HTML a un cliente HTTP.

Lea más publicaciones basadas en Python aquí.

Cómo instalar y jugar a Doom en Linux
Introducción a Doom La serie Doom se originó en los años 90 después del lanzamiento del Doom original. Fue un éxito instantáneo y, desde ese momento e...
Vulkan para usuarios de Linux
Con cada nueva generación de tarjetas gráficas, vemos que los desarrolladores de juegos superan los límites de la fidelidad gráfica y se acercan un pa...
OpenTTD frente a Simutrans
Crear su propia simulación de transporte puede ser divertido, relajante y extremadamente atractivo. Es por eso que debes asegurarte de probar tantos j...