Text aus HTML mit Python extrahieren
Ihr Ziel ist es, Text aus einer HTML-Datei in Python zu extrahieren und die Ausgabe zu reproduzieren, die Sie erhalten würden indem Sie den Text aus einem Browser kopieren und in einen Text einfügen Editor.
Herausforderungen
Reguläre Ausdrücke sind für schlecht geformtes HTML nicht robust genug. Obwohl Beautiful Soup oft empfohlen wird, kann es unerwünschte Inhalte wie JavaScript auffangen und HTML-Entitäten nicht interpretieren.
Vielversprechende Alternative: html2text
Obwohl es statt Markdown erzeugt Nur Text, html2text verarbeitet HTML-Entitäten korrekt und ignoriert JavaScript. Die Dokumentation und Beispiele sind jedoch begrenzt.
Optimaler Code für die Textextraktion
Der folgende Code bietet eine effektive Lösung, die unerwünschte Elemente herausfiltert und HTML-Entitäten beibehält:
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)
Abhängigkeit
Um diesen Code zu verwenden, benötigen Sie BeautifulSoup4 installiert mit:
pip install beautifulsoup4
Das obige ist der detaillierte Inhalt vonWie kann ich sauberen Text effizient aus HTML in Python extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!