Extraire du texte de HTML avec Python
Votre objectif est d'extraire le texte d'un fichier HTML en Python, en reproduisant le résultat que vous obtiendriez en copiant le texte depuis un navigateur et en le collant dans un texte éditeur.
Défis
Les expressions régulières ne sont pas assez robustes pour du HTML mal formé. Bien que Beautiful Soup soit souvent recommandé, il peut récupérer du contenu indésirable comme JavaScript et ne pas parvenir à interpréter les entités HTML.
Alternative prometteuse : html2text
Bien qu'il produise des démarques au lieu de texte brut, html2text gère correctement les entités HTML et ignore JavaScript. Cependant, sa documentation et ses exemples sont limités.
Code optimal pour l'extraction de texte
Le code ci-dessous offre une solution efficace qui filtre les éléments indésirables et préserve les entités HTML :
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)
Dépendance
Pour utiliser ce code, vous aurez besoin BeautifulSoup4 installé avec :
pip install beautifulsoup4
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!