SwiftHTML & CSSSolidityDesenvolvimento de JogosSolana/Rust
24.12.2024

Extraindo Texto de Tags HTML em Python: Análise e Saída

Resumo Rápido

Para limpar uma string de tags HTML em Python, você pode usar uma combinação da função re.sub(), que é utilizada para buscar e remover as tags, com a função integrada html.unescape() para converter entidades HTML:

import re
from html import unescape

strip_html = lambda texto: unescape(re.sub('<[^<]+?>', '', texto))
print(strip_html("<h1>Olá, <b>mundo</b>!</h1>"))  
# Saída: Olá, mundo!

Dessa forma, você remove efetivamente tudo relacionado ao HTML da string, deixando apenas o texto puro.

Usando html.parser para Processamento Detalhado

Se sua tarefa requer uma análise mais detalhada do conteúdo HTML, considere usar o módulo html.parser que vem com o Python.

from html.parser import HTMLParser

class MLStripper(HTMLParser):
    def __init__(self):
        super().__init__()
        self.strict = False
        self.convert_charrefs = True
        self.fed = []

    def handle_data(self, d):
        self.fed.append(d)

    def get_data(self):
        return ''.join(self.fed)

def strip_tags(html):
    s = MLStripper()
    s.feed(html)
    return s.get_data()

print(strip_tags("<h1>Olá, <b>mundo</b>!</h1>"))  
# Saída: Olá, mundo!

BeautifulSoup para Facilidade de Uso

BeautifulSoup é uma ferramenta que combina perfeitamente usabilidade com uma abordagem flexível.

from bs4 import BeautifulSoup

def strip_html_bs(html):
    soup = BeautifulSoup(html, "html.parser")
    return soup.get_text()

print(strip_html_bs("<h1>Olá, <b>mundo</b>!</h1>"))  
# Saída: Olá, mundo!

BeautifulSoup se destaca em equilibrar simplicidade e funcionalidade, removendo as complexidades associadas ao processamento de HTML.

Limitações do Uso de Expressões Regulares

Expressões regulares podem ser uma solução adequada para tarefas simples; no entanto, elas não são adequadas para lidar com tags aninhadas e HTML malformado. Tenha isso em mente ao escolher sua abordagem.

Proteção contra Problemas Comuns

Proteção contra Ataques XSS

É crucial não confundir a remoção do HTML com sua higienização. Para manter o HTML seguro e proteger contra ataques XSS, utilize ferramentas como MarkupSafe e Bleach.

Decodificação de Entidades para Melhor Exibição de Texto

Não se esqueça de converter entidades HTML de volta para caracteres comuns para tornar o texto mais compreensível:

clean_text = strip_html("&lt;HTML&gt; entidades como &amp; são decodificadas!")
print(clean_text)  
# Saída: <HTML> entidades como & são decodificadas!

Atenção aos Caracteres de Controle ASCII

Às vezes, é necessário remover caracteres de controle do ASCII para um tratamento adequado do texto:

strip_control_chars = lambda texto: ''.join(ch for ch in texto if ch.isprintable())

Ao realizar essa operação, você pode eliminar caracteres indesejados que dificultam a percepção do texto.

Visualização

O processo de limpeza do texto pode ser visualizado como o trabalho de um limpador em um parque da cidade:

Parque do Texto (🌳📃🌸🗑️🌳): "<div>Olá <b>mundo</b>!</div>"

Limpador (🛀) = Removedor de HTML

🛀✨🌳📃🌸🌳: "Olá mundo!"

Eles percorrem o parque, coletando o lixo HTML, e deixam para trás um gramado limpo de texto.

Criando Soluções Flexíveis

O método para remover HTML depende da tarefa específica e das condições de trabalho.

Dinamismo com Soluções Orientadas a Objetos

Se você precisa de uma solução para tarefas mais complexas e uma função lambda não for suficiente, você pode usar a classe MLStripper do módulo html.parser, personalizável para lidar com qualquer desafio.

Trabalhando com Arquivos

Os exemplos fornecidos podem facilmente ser adaptados para processamento de arquivos, o que simplificaria o manuseio de documentos grandes ou o processamento em massa de múltiplos arquivos simultaneamente.

Confiabilidade com HTML Malformado

BeautifulSoup e html.parser lidam muito bem com HTML malformado, permitindo que você extraia texto de forma eficiente, mesmo em situações onde outros métodos poderiam falhar.

Materiais Úteis

  1. Documentação do Beautiful Soup — para entender como trabalhar com Beautiful Soup ao analisar HTML.
  2. re — Operações com Expressões Regulares — para explorar expressões regulares em Python.
  3. Removendo HTML de Strings em Python - Stack Overflow — uma coleção de soluções e exemplos da comunidade.
  4. Documentação do Bleach — para entender como trabalhar com a ferramenta de limpeza de HTML e proteger contra ataques XSS.
  5. html.parser — Parser Simples de HTML e XHTML — para estudar como trabalhar com HTMLParser em Python.
  6. regex101 — um serviço para criar, testar e depurar expressões regulares.

Video

Did you like this article? Rate it from 1 to 5:

Thank you for voting!