En esta lección, eso es lo que pretendemos hacer. Descubriremos cómo se pueden extraer valores de diferentes etiquetas HTML y también anularemos la funcionalidad predeterminada de este módulo para agregar alguna lógica propia. Haremos esto usando el Htmlparser Clase en Python en html.pasador módulo. Veamos el código en acción.
Mirando la clase htmlparser
Para analizar el texto HTML en Python, podemos hacer uso de Htmlparser clasificar html.pasador módulo. Veamos la clase DFinition para el Htmlparser clase:
Clase HTML.pasador.Htmlparser (*, convert_charrefs = true)
El convert_charrefs campo, si se establece en True, hará que todas las referencias de personajes se conviertan a sus equivalentes unicode. Solo el script/estilo Los elementos no se convierten. Ahora, intentaremos comprender cada función para esta clase para comprender mejor lo que hace cada función.
Def Handle_StartendTag (self, tag, attrs):
ser.Handle_starttag (etiqueta, attrs)
ser.Handle_endtag (etiqueta)
Def Handle_Starttag (self, tag, attrs):
aprobar
Def Handle_endtag (self, tag):
aprobar
Def Handle_Charref (self, nombre):
aprobar
Def Handle_EntityRef (self, nombre):
aprobar
Def handle_data (self, data):
aprobar
Def Handle_Comment (self, data):
aprobar
Def Handle_pi (self, data):
aprobar
Def Handle_Decl (self, dec):
aprobar
Subclasificación de la clase HTMLParser
En esta sección, subsplicaremos la clase HTMLParser y analizaremos algunas de las funciones que se llaman cuando los datos HTML se pasan a la instancia de clase. Escribamos un script simple que haga todo esto:
de html.PARSER IMPORT HTMLPARSER
clase LinuxhtmlParser (htmlparser):
Def Handle_Starttag (self, tag, attrs):
Imprimir ("Etiqueta de inicio encontrado:", etiqueta)
Def Handle_endtag (self, tag):
Imprimir ("Etiqueta final encontrada:", etiqueta)
Def handle_data (self, data):
Imprimir ("Datos encontrados:", datos)
parser = linuxhtmlParser ()
pasador.alimentar("
'Módulo de análisis de Python HTML
')
Esto es lo que recuperamos con este comando:
Python htmlparser subclase
Funciones htmlparser
En esta sección, trabajaremos con varias funciones de la clase HTMLPARSER y veremos la funcionalidad de cada uno de ellos:
de html.PARSER IMPORT HTMLPARSER
de html.Entidades Nombre de importación2CodePoint
clase LinuxHint_Parse (htmlparser):
Def Handle_Starttag (self, tag, attrs):
Imprimir ("Etiqueta de inicio:", etiqueta)
para attr en attrs:
imprimir ("attr:", attr)
Def Handle_endtag (self, tag):
Imprimir ("Etiqueta final:", etiqueta)
Def handle_data (self, data):
imprimir ("datos:", datos)
Def Handle_Comment (self, data):
Imprimir ("Comentario:", datos)
Def Handle_EntityRef (self, nombre):
c = chr (name2CodePoint [nombre])
imprimir ("llamado ent:", c)
Def Handle_Charref (self, nombre):
Si nombre.Startswith ('x'):
c = chr (int (nombre [1:], 16))
demás:
c = chr (int (nombre))
Imprimir ("Número:", C)
Def Handle_Decl (self, data):
Imprimir ("Decl:", datos)
parser = linuxhint_parse ()
Con varias llamadas, alimentemos los datos HTML separados a esta instancia y ver qué salida generan estas llamadas. Comenzaremos con un simple Mordaz cadena:
pasador.alimentar(' ')
Esto es lo que recuperamos con esta llamada:
Cadena de doctype
Probemos ahora una etiqueta de imagen y veamos qué datos extrae:
pasador.alimentar('')
Esto es lo que recuperamos con esta llamada:
Etiqueta de imagen htmlparser
A continuación, intentemos cómo se comporta la etiqueta de script con las funciones de Python:
pasador.alimentar(''
'alerta("Linuxhint Python"); ')
pasador.Feed ('#Python Color: Green')
pasador.Feed ('#Python Color: Green')
Esto es lo que recuperamos con esta llamada:
Etiqueta de script en htmlparser
Finalmente, también pasamos comentarios a la sección HTMLPARSER:
pasador.alimentar(''
'Contenido específico de IE')
Esto es lo que recuperamos con esta llamada:
Comentarios de análisis
Conclusión
En esta lección, observamos cómo podemos analizar HTML usando la 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í.