Erweiterter Python Web Scraper
Erstellen Sie einen erweiterten Web-Scraper in Python. Erfahren Sie, wie Sie Seitendaten extrahieren, mit User-Agent-Blockaden umgehen, Ratenlimits verwalten und Ausgaben strukturieren.
Übersicht
Beim Web Scraping werden Webseiten programmgesteuert abgerufen und ihre HTML-Struktur analysiert, um bestimmte Daten zu extrahieren. In Python wird dies traditionell mit „requests“ und „BeautifulSoup“ erreicht.
Fortgeschrittene Schaber erfordern eine robuste Konfiguration. Das bloße Anfordern von Seiten kann zu Sperrungen oder IP-Verboten führen, was eine Anpassung der Header wie benutzerdefinierte Benutzeragenten und die Einführung zufälliger Verzögerungsintervalle erforderlich macht.
Dieses interaktive Beispiel ahmt das Scraping von Scheindaten mit Validierung nach. Es zeigt, wie man verschachtelte Container findet, mit Netzwerk-Timeouts umgeht und Ausgabedaten in saubere Listen strukturiert.
Code- und Ausführungsausgabe
Eine Web-Scraping-Routine mit benutzerdefinierten Headern, Timeout-Management und HTML-Parser-Strukturen.
import requests
from bs4 import BeautifulSoup
import time
def scrape_quotes():
# Mock URL designed for scraping practice
url = "https://quotes.toscrape.com/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
print(f"Initiating request to: {url}...")
try:
# Request with timeout protection
response = requests.get(url, headers=headers, timeout=5)
response.raise_for_status()
soup = BeautifulSoup(response.text, "html.parser")
quotes = soup.find_all("div", class_="quote", limit=3)
results = []
for q in quotes:
text = q.find("span", class_="text").text
author = q.find("small", class_="author").text
tags = [t.text for t in q.find_all("a", class_="tag")]
results.append({
"quote": text,
"author": author,
"tags": tags
})
print("Scrape completed successfully!\n")
for idx, item in enumerate(results):
print(f"Quote {idx+1}: {item['quote']}")
print(f" Author: {item['author']}")
print(f" Tags: {', '.join(item['tags'])}\n")
except requests.exceptions.RequestException as e:
print(f"Network error occurred: {e}")
scrape_quotes()Initiating request to: https://quotes.toscrape.com/...
Scrape completed successfully!
Quote 1: “The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.”
Author: Albert Einstein
Tags: change, deep-thoughts, thinking
Quote 2: “It is our choices, Harry, that show what we truly are, far more than our abilities.”
Author: J.K. Rowling
Tags: abilities, choices
Quote 3: “There are only two ways to live your life. One is as though nothing is a miracle. The other is as though everything is a miracle.”
Author: Albert Einstein
Tags: inspirational, life, live, miracleSchrittweise Umsetzung
- Preisüberwachung und -verfolgung über Einkaufskataloge hinweg
- Stimmungsanalyse durch Sammeln von Bewertungsdaten aus Foren
- Erstellung wissenschaftlicher Forschungsdatensätze
Häufig gestellte Fragen
Was ist robots.txt?
Eine im Stammverzeichnis einer Domain abgelegte Textdatei, die angibt, welche Pfade Suchroboter und Crawler crawlen dürfen oder nicht. Sie sollten es immer lesen, bevor Sie einen Scraper schreiben.
Wie kann ich über JavaScript dynamisch gerenderte Seiten scrapen?
Standardanfragen rufen nur statisches HTML ab. Um Javascript-lastige Seiten zu analysieren, müssen Sie Browser-Automatisierungstools wie Playwright oder Selenium verwenden.