Was macht web-scraping?
Web Scraping mit Anti-Bot-Umgehung, Content-Extraktion, undokumentierten APIs und Poison-Pill-Erkennung. Verwenden Sie dies, wenn Sie Inhalte von Websites extrahieren, Bezahlschranken umgehen, Scraping-Kaskaden implementieren oder soziale Medien verarbeiten. Deckt Muster mit requests, trafilatura, Playwright (inkl. Stealth-Modus), yt-dlp und instaloader ab.
Warum dieses Skill?
- Anti-Bot-Umgehung: Kopfzeilen, rotierende User-Agents, Proxy-Unterstützung und verhaltensorientierte Muster.
- Strukturierte Extraktion:
trafilatura-Extraktion mit automatischer Bereinigung. - Dynamic Content:
Playwrightmit Undetected-Chromedriver / Stealth-Modi. - Medien: Video-Download (yt-dlp) & Instagram-Profil-/Hashtag-Daten (instaloader).
- Undokumentierte APIs: Reverse Engineering von XHR/Fetch-Aufrufen.
- Poison Pill Detection: Erkennung von gesperrten Inhalten (z.B.
captcha/bannedin Antworten).
Unterstützte Tools & Bibliotheken
| Bibliothek | Zweck | Hinweis |
|---|---|---|
requests | HTTP-Aufrufe mit Session | Cookies & Kopfzeilen-Header |
BeautifulSoup | HTML-Parsing | Zusammen mit lxml-Parser |
trafilatura | Saubere Text-Extraktion | Bereinigung von HTML-Müll |
playwright | Browser-Automation | Kopfzeilen-lose & Stealth |
yt-dlp | Video-Download | Playlists, Untertitel |
instaloader | Instagram-Scraping | Profile, Hashtags, Stories |
Schnellstart
Basis-Scraping (statische Seiten)
import requests
from bs4 import BeautifulSoup
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
})
response = session.get("https://example.com")
soup = BeautifulSoup(response.content, "html.parser")
print(soup.title.text)
Spielereien mit Playwright (Stealth)
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
context = browser.new_context(
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
)
page = context.new_page()
page.goto("https://example.com")
print(page.title())
browser.close()
Poison Pill Detection
def has_poison_pill(response_text: str) -> bool:
indicators = ["captcha", "access denied", "rate limit", "suspicious activity"]
return any(indicator in response_text.lower() for indicator in indicators)
Undokumentierte APIs
Nutzen Sie den Netzwerk-Tab von DevTools, um API-Endpunkte zu finden, und führen Sie direkte Fetch-Aufrufe durch:
import requests
url = "https://api.example.com/v1/data?param=value"
headers = {
"Authorization": "Bearer <token>",
"X-CSRF-Token": "..."
}
response = requests.get(url, headers=headers)
print(response.json())
Scraping-Kaskaden
- Erster Versuch:
requests+trafilatura(schnell, leichtgewichtig). - Zweiter Versuch:
playwright(wenn Anti-Bot erkannt wird). - Letzter Ausweg: Undokumentierte API oder externer Dienst.
Paywalls
- Verwenden Sie einen anderen User-Agent oder einen Referer.
- Nutzen Sie Archive.is / Google Cache.
- Verwenden Sie
12ft.iooder andere Paywall-Bypass-Dienste.
Soziale Medien
Instagram (instaloader)
instaloader profile <profilename>
YouTube / Videos (yt-dlp)
yt-dlp "https://www.youtube.com/watch?v=<id>"
Fehlerbehebung
- Blockierte Anforderungen: Fügen Sie eine Verzögerung
time.sleep()hinzu. - Captcha: Nutzen Sie Playwright-Stealth oder proxies.
- Ratenlimit: Wechseln Sie IP-Adressen / rotieren Sie User-Agents.
Hinweis: Respektieren Sie stets die
robots.txtund die Nutzungsbedingungen der Website. Verwenden Sie diese Techniken nur, wenn es rechtlich und ethisch vertretbar ist.