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.