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 ?
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!