HTML mit BeautifulSoup parsen
Navigieren Sie durch den Parse-Baum und extrahieren Sie Daten mit Selektoren.
HTML mit BeautifulSoup parsen ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
BeautifulSoup installieren
beautifulsoup4 analysiert HTML und XML. Verwenden Sie den lxml-Parser für höhere Geschwindigkeit oder html.parser ohne zusätzliche Abhängigkeiten.
# pip install beautifulsoup4 lxml
from bs4 import BeautifulSoup
html = "<h1>Hello</h1><p class='intro'>World</p>"
soup = BeautifulSoup(html, "lxml")
print(soup.h1.text) # HelloElemente finden
find(tag) gibt das erste passende Element zurück. find_all(tag) gibt eine Liste aller passenden Elemente zurück.
from bs4 import BeautifulSoup
html = "<ul><li>A</li><li>B</li><li>C</li></ul>"
soup = BeautifulSoup(html, "lxml")
print(soup.find("li").text) # A
print([li.text for li in soup.find_all("li")]) # [A,B,C]CSS-Selektoren
soup.select("css selector") verwendet CSS-Syntax. soup.select_one() gibt den ersten Treffer zurück.
from bs4 import BeautifulSoup
html = '<div class="card"><a href="/p/1">Link 1</a></div>'
soup = BeautifulSoup(html, "lxml")
print(soup.select("div.card a")[0]["href"]) # /p/1
print(soup.select_one("a")["href"]) # /p/1Auf Attribute zugreifen
Greifen Sie auf Tag-Attribute wie auf ein Dictionary zu: tag["href"], tag.get("class", []).
from bs4 import BeautifulSoup
html = '<a href="https://example.com" class="link external">Click</a>'
soup = BeautifulSoup(html, "lxml")
a = soup.find("a")
print(a["href"]) # https://example.com
print(a.get("class", [])) # ['link', 'external']Parse-Baum durchlaufen
Verwenden Sie .parent, .children, .next_sibling und .previous_sibling, um den Baum zu durchlaufen.
from bs4 import BeautifulSoup
html = "<div><h2>Title</h2><p>Para</p></div>"
soup = BeautifulSoup(html, "lxml")
h2 = soup.find("h2")
print(h2.parent.name) # div
print(h2.next_sibling.text) # Para (next sibling)Text extrahieren
tag.get_text(separator=" ", strip=True) gibt den gesamten Text innerhalb eines Tags zurück und bereinigt dabei Leerraum.
from bs4 import BeautifulSoup
html = "<div> <p>Hello</p> <p> World </p> </div>"
soup = BeautifulSoup(html, "lxml")
print(soup.div.get_text(separator=" ", strip=True))
# Hello WorldScraping mit requests + BeautifulSoup
Rufen Sie eine Seite mit requests ab und analysieren Sie sie mit BeautifulSoup – das klassische Scraping-Duo.
import requests
from bs4 import BeautifulSoup
url = "https://books.toscrape.com"
r = requests.get(url, timeout=10)
soup = BeautifulSoup(r.text, "lxml")
titles = [h3.find("a")["title"] for h3 in soup.select("article.product_pod h3")]
print(titles[:3])Relative URLs verarbeiten
Verwenden Sie urllib.parse.urljoin(base, href), um relative Links in absolute URLs umzuwandeln.
from urllib.parse import urljoin
base = "https://example.com/products/"
href = "../about"
print(urljoin(base, href)) # https://example.com/aboutZeichenkodierungen verarbeiten
BeautifulSoup erkennt die Zeichenkodierung automatisch. Sie können sie jedoch auch angeben oder r.encoding aus requests verwenden.
import requests
from bs4 import BeautifulSoup
r = requests.get("https://example.com")
print(r.encoding) # e.g. utf-8
soup = BeautifulSoup(r.content, "lxml", from_encoding=r.encoding)Ändern und serialisieren
Ändern Sie den Parse-Baum und wandeln Sie ihn mit str(tag) oder soup.prettify() wieder in HTML um.
from bs4 import BeautifulSoup
html = "<p>Hello <b>world</b></p>"
soup = BeautifulSoup(html, "lxml")
soup.b.decompose() # remove the <b> tag
print(str(soup.p)) # <p>Hello </p>Grenzen von BeautifulSoup
BS4 analysiert statisches HTML. JavaScript kann nicht ausgeführt werden. Verwenden Sie für JavaScript-gerenderte Seiten Playwright oder Selenium.
# BeautifulSoup: good for static HTML
# Playwright: for JavaScript-rendered SPAs
# Scrapy: for large-scale crawls with pipelines
# pip install playwright
# playwright install
# from playwright.async_api import async_playwrightSchnelltest
Welche Methode gibt in BeautifulSoup alle Elemente zurück, die einem CSS-Selektor entsprechen?
Zusammenfassung
BeautifulSoup analysiert HTML in einen durchsuchbaren Baum. Verwenden Sie find()/find_all() für die Tag-Suche, select() für CSS-Selektoren und get_text() für bereinigten Text. Kombinieren Sie BeautifulSoup mit requests für statische Seiten und verwenden Sie Playwright für JavaScript-gerenderte Inhalte.
Häufig gestellte Fragen
Ist die Lektion „HTML mit BeautifulSoup parsen“ kostenlos?
Ja — der vollständige Text von „HTML mit BeautifulSoup parsen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „HTML mit BeautifulSoup parsen“?
Navigieren Sie durch den Parse-Baum und extrahieren Sie Daten mit Selektoren. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Python Academy zu starten?
Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „HTML mit BeautifulSoup parsen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?
Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- HTTP-Anfragen mit requests und httpx
- HTML mit BeautifulSoup parsen
- Einen Scrapy-Spider erstellen
- JavaScript und Maßnahmen gegen Scraping