HTMLParser invoca métodos al encontrar etiquetas, datos, comentarios y entidades. Su modelo por eventos es ligero y sirve para extracciones simples de HTML predecible.
Ejemplo práctico
from html.parser import HTMLParser
class LinkCollector(HTMLParser):
def __init__(self) -> None:
super().__init__()
self.links: list[str] = []
def handle_starttag(self, tag, attrs) -> None:
if tag == "a":
href = dict(attrs).get("href")
if href:
self.links.append(href)
parser = LinkCollector()
parser.feed('<a href="/docs">Docs</a>')
print(parser.links)
Normaliza los valores recogidos
Los atributos llegan como pares y pueden faltar. Resuelve URL relativas contra una base autorizada y valida esquema y dominio antes de realizar solicitudes.
Un parser no sanitiza
El HTML real puede estar malformado y los scripts pueden cambiar el DOM. HTMLParser no ejecuta JavaScript ni vuelve seguro el contenido para renderizar. Elige otra herramienta para selectores complejos o comportamiento de navegador.
Sigue aprendiendo
Consulta también Web Scraping con Python: BeautifulSoup y Selenium y Unicode, Bytes y UTF-8 en Python: Guía Práctica. A documentación oficial de Python, consultada el 22 de julio de 2026, detalla la API y el comportamiento entre versiones.