Maison >développement back-end >Tutoriel Python >Comment puis-je extraire du texte propre à partir de fichiers HTML en Python tout en évitant les pièges des expressions régulières ?

Comment puis-je extraire du texte propre à partir de fichiers HTML en Python tout en évitant les pièges des expressions régulières ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-28 19:53:14790parcourir

How Can I Extract Clean Text from HTML Files in Python While Avoiding the Pitfalls of Regular Expressions?

Extraire du texte propre à partir de fichiers HTML avec Python

Lorsque vous cherchez à extraire du texte à partir de fichiers HTML à l'aide de Python, il est important de prendre en compte la robustesse et la précision. . Bien que les expressions régulières puissent souvent faire l'affaire, elles peuvent avoir des difficultés avec un code HTML mal formé.

Pour des solutions plus robustes, des bibliothèques comme Beautiful Soup sont généralement recommandées. Cependant, les utilisateurs peuvent rencontrer des problèmes avec du texte indésirable, tel qu'une source JavaScript, et une interprétation incorrecte des entités HTML.

Pour résoudre ces problèmes, une approche plus globale est nécessaire.

html2text : Une solution prometteuse

Une solution prometteuse est html2text. Cette bibliothèque gère correctement les entités HTML et ignore JavaScript. Cependant, il produit du Markdown au lieu du texte brut, ce qui nécessite un traitement supplémentaire pour le convertir.

Exploiter BeautifulSoup et le code personnalisé

Une approche alternative consiste à utiliser BeautifulSoup en conjonction avec code personnalisé. En supprimant les éléments indésirables (par exemple, les scripts et les styles) et en tirant parti de la méthode get_text(), vous pouvez obtenir une représentation de texte propre sans vous fier uniquement aux expressions régulières.

Voici un extrait de code Python qui illustre cette approche :

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 script and style elements
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Additional processing to remove unwanted whitespace and split headlines into separate lines
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)

Cette approche vous permet d'extraire du texte clair et lisible par l'homme à partir de fichiers HTML, sans les inconvénients des expressions régulières ou des bibliothèques qui peuvent ne pas gérer tous les scénarios. efficacement.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn