Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Python effizient sauberen Text aus HTML-Dateien extrahieren?

Wie kann ich mit Python effizient sauberen Text aus HTML-Dateien extrahieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 03:54:09683Durchsuche

How Can I Efficiently Extract Clean Text from HTML Files Using Python?

Text aus HTML-Dateien mit Python extrahieren: Eine umfassende Anleitung

Einführung

Text extrahieren aus HTML-Dateien können für verschiedene Datenverarbeitungs- und Analyseaufgaben unerlässlich sein. Während reguläre Ausdrücke für einfache HTML-Strukturen machbar sind, können sie bei schlecht geformtem Code Probleme bereiten. Dieser Artikel untersucht die robuste Alternative – Beautiful Soup – und bietet eine praktische Lösung, die unerwünschtes JavaScript effektiv entfernt und HTML-Entitäten interpretiert.

Verwendung von Beautiful Soup

Zum Extrahieren von Text mit Beautiful Soup, folgen Sie diesen Schritten:

  1. Importieren Sie die BeautifulSoup-Bibliothek.
  2. Öffnen Sie den HTML-Code Datei mit urlopen().
  3. Erstellen Sie ein BeautifulSoup-Objekt mit BeautifulSoup(html, Features="html.parser").
  4. Entfernen Sie unerwünschte Elemente (z. B. Skripte und Stile) mit for script in Suppe (["script", "style"]): script.extract().
  5. Extrahieren Sie den Text mit supple.get_text().
  6. Teilen Sie den Text in Zeilen auf und entfernen Sie Leerraum mit Zeilen = (line.strip() für Zeile in text.splitlines()).
  7. Trennen Sie mehrere Überschriften mit chunks = (phrase.strip() für Zeile in Zeilen für Phrase in line.split(" ")).
  8. Leerzeilen mit text = entfernen 'n'.join(Chunk für Chunk in Chunks, wenn Chunk).

Codebeispiel

Hier ist ein vollständiges Codebeispiel:

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

Zusätzlich Optionen

  • html2text: Eine alternative Bibliothek, die HTML-Entitäten verarbeitet und JavaScript ignoriert. Es erzeugt jedoch Markdown anstelle von einfachem Text.
  • lxml: Eine leistungsstarke XML- und HTML-Parser-Bibliothek, die auch Text extrahieren kann, nachdem Tags entfernt wurden.

Fazit

Diese Anleitung bietet eine umfassende Lösung zum Extrahieren von Text aus HTML-Dateien mit BeautifulSoup. Durch das Entfernen unerwünschter Elemente und die Interpretation von HTML-Entitäten wird effektiv eine reine Textausgabe zur weiteren Verarbeitung und Analyse generiert.

Das obige ist der detaillierte Inhalt vonWie kann ich mit Python effizient sauberen Text aus HTML-Dateien extrahieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn