1. Einführung in Methoden der Textextraktion
Heute lernen wir, wie man wertvolle Textdaten und Attribute aus HTML-Elementen extrahiert. Leg dein Machete weg, denn mit BeautifulSoup
kann man das Arbeiten mit Code eher mit einem Spaziergang durch einen Herbstgarten vergleichen, wo die Äpfel nur darauf warten, gepflückt zu werden. Bist du bereit, die Früchte deines Lernens zu ernten? Los geht's!
Methoden zur Textextraktion aus HTML-Elementen stehen ganz oben auf unserer To-Do-Liste. Bevor wir mit der Textextraktion beginnen, laden wir die Seite.
import requests
from bs4 import BeautifulSoup
# HTML-Code der Seite laden
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
Jetzt haben wir ein soup
-Objekt, das die baumartige Struktur unseres HTML-Dokuments enthält. Lass uns den Text aus einem beliebigen Tag-Element extrahieren, zum Beispiel aus einer Überschrift.
Methoden .text
und get_text()
Die Eigenschaft .text
und die dazugehörige Methode get_text()
ermöglichen es, den Textinhalt eines Elements (einschließlich aller verschachtelten Elemente) zu extrahieren.
# Text aus der ersten gefundenen h1-Überschrift extrahieren
h1_tag = soup.find('h1')
print(h1_tag.text) # oder h1_tag.get_text()
Versuch es selbst: Finde andere Elemente, nutze die Suchmethoden, die wir in den vorherigen Lektionen gelernt haben, und extrahiere deren Text. Du wirst überrascht sein, wie viele Informationen du bekommen kannst!
2. Extraktion von Attributwerten
Texte sind eine Sache, aber manchmal sind wichtige Daten in Attributen versteckt, wie Pässe in Hosentaschen. Stell dir vor, du musst die Adresse eines Links herausfinden oder die URL eines Bildes bekommen (frag mich nicht, warum das nötig sein könnte – vielleicht willst du eine Sammlung von Katzenbildern anlegen).
Extraktion von Attributwerten
Angenommen, wir haben ein Link-Element <a href="https://example.com">Example</a>
. Wie bekommen wir den Wert des href
-Attributs? Ganz einfach.
# Link extrahieren
a_tag = soup.find('a')
link = a_tag['href']
print("Link:", link)
Dieser Code extrahiert den Wert des href
-Attributs. Jede andere nützliche Attribute kannst du auf die gleiche Weise extrahieren.
Versuch, ein Bild zu extrahieren
Die Extraktion einer Bild-URL kann genauso einfach sein. Schauen wir uns den Fall von <img src="image.jpg" alt="Katze">
an.
# Bild-URL extrahieren
img_tag = soup.find('img')
image_url = img_tag['src']
print("Bild-URL:", image_url)
Die Schönheit von BeautifulSoup
liegt darin, dass es ermöglicht, Daten einfach zu finden und zu extrahieren, ohne dass wir uns Gedanken darüber machen müssen, wie genau die HTML-Struktur funktioniert.
3. Beispiele für die Extraktion von Texten und Attributen
Es ist Zeit für Beispiele. Lass uns eine etwas komplexere Aufgabe angehen: Alle Links auf der Seite zusammen mit dem Text innerhalb der <a>
-Tags extrahieren.
Beispiel: Extraktion aller Links mit Text
# Alle a-Tags finden
a_tags = soup.find_all('a')
# Link und Text ausgeben
for a_tag in a_tags:
link = a_tag['href']
text = a_tag.get_text()
print(f"Text: {text}, Link: {link}")
Wie du siehst, findet die Methode find_all
bequem alle Elemente, die den Suchkriterien entsprechen, und die for
-Schleife ermöglicht es, jedes einzelne davon zu durchlaufen.
4. Fehlerbehandlung
Vergiss nicht, Fehler zu behandeln. Manchmal kann die HTML-Struktur nicht so sein, wie du es erwartest, oder ein Element hat möglicherweise nicht das erwartete Attribut. Sorge dafür, dass dein Code in solchen Fällen nicht „abstürzt“.
# Beispiel für Fehlerbehandlung bei der Extraktion eines Attributs
try:
link = a_tag['href']
except KeyError:
link = None
print("Attribut href nicht gefunden!")
Dies macht das Skript robuster, und es wird sich wegen eines kleinen Fehlers nicht stoppen.
5. Praktische Anwendung
Im Jahr 2019 teilte ein russischer Unternehmer eine Geschichte darüber, wie sein Unternehmen, das sich auf Daten-Parsing spezialisiert hat, einen Jahresumsatz von 20 Millionen Rubel erreichte. Er betonte, dass die automatisierte Informationsbeschaffung den Wettbewerb nicht einschränkt, sondern vielmehr Unternehmen hilft, sich an den Markt anzupassen.
Zum Beispiel bestellte ein Kunde einen Parser, um täglich den Warenbestand von der Website des Lieferanten zu sammeln, was es ermöglichte, das Sortiment und die Preise in seinem eigenen Online-Shop zeitnah zu aktualisieren. Der Unternehmer hob auch hervor, dass, trotz der Versuche einiger Seiten, das Parsing zu erschweren, moderne Technologien es effizient ermöglichen, solche Hindernisse zu umgehen und Unternehmen Zugang zu den notwendigen Daten für strategische Entscheidungen zu verschaffen.
GO TO FULL VERSION