"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment puis-je extraire efficacement le texte propre de HTML dans Python?

Comment puis-je extraire efficacement le texte propre de HTML dans Python?

Publié le 2025-03-04
Parcourir:219

How Can I Efficiently Extract Clean Text from HTML in Python?

Extraction du texte de html avec python

votre objectif est d'extraire le texte d'un fichier html en python, reproduisant la sortie que vous obtiendrez en copie le texte d'un solider et en le faisant dans un texte Éditeur.

défis

Les expressions régulières ne sont pas assez robustes pour HTML mal formé. Bien que la belle soupe soit souvent recommandée, elle peut ramasser du contenu indésirable comme JavaScript et ne pas interpréter des entités HTML.

Alternative prometteuse: html2text

Bien qu'il produit de markdown au lieu de texte brut, html2text hentre html entities correctement et ignore javascrip. Cependant, sa documentation et ses exemples sont limités. De BS4 Import BeautifulSoup url = "http://news.bbc.co.uk/2/hi/health/2284783.stm" html = urlopen (url) .read () Soup = BeautifulSoup (HTML, fonctionnalités = "html.parser") # Supprimer les scripts et les styles pour le script dans la soupe (["script", "style"]): script.extract () # Extraire du texte text = soup.get_text () # Convertir les pauses de ligne et supprimer les espaces blancs lignes = (line.strip () pour la ligne dans le texte.splitlines ()) Chunks = (phrase.strip () pour la ligne en lignes pour la phrase en ligne.split ("")) text = '\ n'.join (morceau pour morceau en morceaux si morceau) print (text)

dépendance

Pour utiliser ce code, vous aurez besoin de biensoup4 installé avec:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# Remove scripts and styles
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Convert line breaks and remove whitespace
lines = (line.strip() for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3