Webscraping-Bibliotheken
1. BeautifulSoup
- Sehr einfach zu benutzen
- Ideal für kleinere Scraping-Aufgaben
- Arbeitet gut mit
requests
- Kein Browser, also kein JavaScript-Support
2. Scrapy
- Vollständiges Framework für große Scraping-Projekte
- Sehr schnell und asynchron
- Unterstützt Pipelines, Middleware, Auto-Throttling
- Steilere Lernkurve als BeautifulSoup
3. Selenium
- Simuliert einen echten Browser
- Ideal für Seiten mit viel JavaScript
- Kann mit Headless-Browsern wie Chrome oder Firefox laufen
- Langsamer als andere Tools
4. Playwright (mit Python)
- Modernes, schnelles und stabiles Tool zur Browserautomation
- Besseres Handling von JavaScript als Selenium
- Unterstützt mehrere Browser (Chrome, Firefox, Safari)
PDF-Bibliotheken
1. PyMuPDF (fitz
)
- Schnelles, zuverlässiges Parsing von PDFs
- Kann Text aus Seiten extrahieren (
page.get_text()
), auch strukturiert - Eignet sich sehr gut für Scraping-Zwecke
2. pdfminer.six
- Sehr detailliert, aber langsamer
- Gut für strukturierte Layout-Extraktion (z. B. Tabellen)
- Komplexere API
3. PyPDF2 / pypdf
- Gut zum Zusammenfügen, Seiten extrahieren, Metadaten
- Eher für Manipulation als fürs reine Textlesen
Empfohlen wird hier PyMuPDF
, da schnell und einfach nutzbar.
HTML-Parser
1. BeautifulSoup
- Flexibel, einfach, unterstützt CSS-Selektoren und einfache Tree-Navigation
2. lxml
- Sehr schnell, mit vollem XPath-Support
- Ideal bei großen HTML-Mengen oder wenn XPath benötigt wird
3. Scrapy Selectors
- Native Unterstützung von CSS und XPath
- Sehr performant im Scrapy-Kontext (
response.css()
/response.xpath()
)
Auswahlkriterien
-
Performance: möglichst schnell, auch bei großen Datenmengen
-
Respektiert robots.txt
robots.txt der THWS Seite
```txt User-agent: * Allow: /fileadmin/template2016/ Disallow: /cgi-bin/ Disallow: /fileadmin/ Disallow: /uploads/ Disallow: /uploads/tx_odspmpdf/ Disallow: /personen/ Disallow: /*.swf$ Disallow: /*.gif$ Disallow: /*.jpg$ Disallow: /*.png$ ``` - **HTML-Parsing-Fähigkeiten** - **Duplikatvermeidung** - **Support für PDFs und iCal-Dateien** ______________________________________________________________________ # Begründung der Auswahl Scrapy ist sehr einfach aufzusetzen mit `scrapy startproject thws-scraper .` und resperktiert mit der gesetzten config `ROBOTSTXT_OBEY = True` auch die `robots.txt`. Ebenso lässt sich hier auch direkt ist auch direkt mit den scrapy selectors html parsing verfügbar. Die PDFs lassen sich mit PyMuPDF verarbeiten. ______________________________________________________________________ # JSON Struktur "url": "https://www.thws.de/beispiel",
"type": "html | pdf | ical",
"title": "Titel",
"text": "Gescrapter Text",
"date_scraped": "2025-04-06T12:34:56",
"date_updated": "2024-12-01 | null"
# Scrapy Settings
## Einstellungen
| Einstellung | Beschreibung |
|---------------------------|------------------------------------------------------------------------------|
| `ROBOTSTXT_OBEY = True` | Respektiert die `robots.txt` der Seite |
| `DOWNLOAD_DELAY = 0.5` | Pausiert 0,5 Sekunden zwischen Requests, um Server zu schonen |
| `AUTOTHROTTLE_ENABLED` | Passt das Crawling automatisch an (z. B. bei langsamen Seiten) |
| `CONCURRENT_REQUESTS = 16`| Führt bis zu 16 Requests gleichzeitig aus |
| `USER_AGENT` | Identifiziert den Crawler höflich und transparent |