Pipeline zur systematischen Erfassung von Energie- und Klimarichtlinien bayerischer Kommunen für die GraphRAG-Analyse.
Distributed Packages: https://bwsyncandshare.kit.edu/s/4gTz25xpaYbw6BW
- Python 3.9+ (empfohlen: 3.10)
- macOS, Linux oder Windows
- Stabile Internetverbindung
- Ausreichend Laufzeit (Großstädte: > 10 Stunden)
git clone <repository-url>
cd KIT_KlimaCrawlerpython -m venv wi2026
.\wi2026\Scripts\Activate.ps1python -m venv wi2026
wi2026\Scripts\activatepython3 -m venv wi2026
source wi2026/bin/activateconda create -n wi2026 python=3.10 -y
conda activate wi2026Im Ordner "crawler" (über cd crawler navigieren) dann:
pip install -r requirements.txtUm Bayern parallel zu crawlen, werden vorab aufgeteilte Datenbank-Pakete verwendet.
⚠️ WICHTIG:
In jedem Paket-Ordner heißt die Datei identisch:crawl.sqlite.
Der Dateiname muss exakt so bleiben, da der Code darauf referenziert.
Der Inhalt ist jedoch pro Paket einzigartig (unterschiedliche Kommunen).
-
Reservieren
Trage deinen Namen im Repository in die DateiTRACKER.mdbeim gewählten Paket ein (z. B.pkg_05) und pushe die Änderung. -> Warnhinweis -> Create Fork -
Paket laden
Lade den entsprechenden Ordner aus der Cloud/GitHub herunter. -
Platzieren
Kopiere die enthaltenecrawl.sqlitein:crawler/data/db/(Bestehende Datei überschreiben.)
Den Ordner muss man manuell anlegen, der ist nicht im GitHub!
-
Starten (ohne Limit)
caffeinate -i python3 -m crawler.scripts.run_worker
-
Upload nach Abschluss
Datei umbenennen in:pkg_XX_DONE_Name.sqliteund wieder hochladen.
Falls unabhängig von Paketen gearbeitet wird, kann der Umfang manuell gesteuert werden.
python3 -m crawler.scripts.run_worker --limit 1python3 -m crawler.scripts.run_worker --limit 100Wenn der Rechner in den Ruhezustand geht, bricht die Netzwerkverbindung ab und der Crawl stoppt.
caffeinate -i python3 -m crawler.scripts.run_worker- Caffeine
- PowerToys Awake
- Gehe auf die offizielle GitHub-Seite von Microsoft PowerToys
- Klicke auf Releases
- Lade die Datei PowerToysSetup-xxx-x64.exe herunter
- Installieren → fertig
- PowerToys öffnen
- Links Awake auswählen
- Aktivieren
- Modus wählen:
Keep awake indefinitely
Keep awake for a time interval
Keep awake until expiration
-> Das ist die sauberste Lösung – kein Script, kein Hack.
sqlite3 crawler/data/db/crawl.sqlite "SELECT segment_type, COUNT(*) FROM segments GROUP BY segment_type;"-
run_workerbeendet sich ohne Fehlermeldung -
seed_jobs.statussteht aufdone -
Tabellen
documents_rawundsegmentssind befüllt -
Fehler können aufkommen! Um eine Übersicht zu haben, könnt ihr euer Terminal splitten und
while true; do
clear;
echo "=== CRAWLER PULS ($(date +%H:%M:%S)) ===";
sqlite3 crawler/data/db/crawl.sqlite "
SELECT 'Status ' || status || ': ' || count(*) FROM seed_jobs GROUP BY status;
SELECT 'Gesamt-Dokumente: ' || count(*) FROM documents_raw;
SELECT 'Davon PDFs: ' || count(*) FROM documents_raw WHERE url_canonical LIKE '%.pdf';
";
echo "----------------------------------------";
echo "Zuletzt gefundene PDFs:";
sqlite3 crawler/data/db/crawl.sqlite "SELECT url_canonical FROM documents_raw WHERE url_canonical LIKE '%.pdf' ORDER BY rowid DESC LIMIT 5;";
sleep 30;
doneeinfügen.
brew install watchwatch -n 30 "echo '=== CRAWLER DASHBOARD ===' && \
sqlite3 crawler/data/db/crawl.sqlite \"SELECT 'Status ' || status || ': ' || count(*) FROM seed_jobs GROUP BY status;\" && \
echo '---' && \
echo 'Gesamt-Dokumente:' && \
sqlite3 crawler/data/db/crawl.sqlite \"SELECT count(*) FROM documents_raw;\" && \
echo '---' && \
echo 'Neueste Nachhaltigkeits-PDFs:' && \
sqlite3 crawler/data/db/crawl.sqlite \"SELECT municipality_id, url_canonical FROM documents_raw WHERE (url_canonical LIKE '%klima%' OR url_canonical LIKE '%solar%' OR url_canonical LIKE '%mobil%' OR url_canonical LIKE '%haushalt%') AND url_canonical LIKE '%.pdf' ORDER BY rowid DESC LIMIT 5;\""- Netzwerk: VPN-Abbruch oder instabiles WLAN beendet den Prozess
- Tools:
pdftotextmuss im Systempfad installiert sein - Pfad-Fehler: Die Datenbank muss exakt in
crawler/data/db/liegen
git clone <repository-url>
cd KIT_KlimaCrawler
python3 -m venv venv && source venv/bin/activate
pip install -r requirements.txt
caffeinate -i python3 -m crawler.scripts.run_worker