Python scraper PDF (UMWM/dotacje/KRS/nieruchomości/OPP).
inspiracja
scraper.py jest zbudowany wokół udokumentowanego API (bip.malopolska.pl/api/contexts/{slug}/articles), z twardo zakodowaną listą 34 slugów instytucji — narzędzie 'discovery + download' pod jednorazowe zebranie PDF-ów z regionu.
źródło: /var/www/bip-malopolska/scraper.py (docstring + SLUGS)
cel
Cel: pobrać PDF-y (ogłoszenia, przetargi, sprawozdania, nabory) z 34 jednostek publicznych — prawdopodobnie jako korpus pod dalsze przetwarzanie NLP/RAG, choć docelowe wykorzystanie nie jest udokumentowane.
źródło: scraper.py komentarze, pdfs/ (nazwy plików)
zależności
Python3 + requests + ThreadPoolExecutor, zapisuje lokalnie (state.json, pdfs/, scraper.log). Brak importów/wpisów w crontab/PM2 łączących z innym projektem Aion.
źródło: crontab -l, pm2 jlist (brak procesu bip)
znaczenie
15592 pobranych PDF-ów (14.8GB) to realna, ukończona praca zbierania danych, ale nic w ekosystemie obecnie z tego korpusu nie korzysta.
źródło: du -sh pdfs (15G, 15592 plików)
co działa
Log kończy się wpisem '=== GOTOWE: 15592 PDFów, 14831 MB ===' z 28.06.2026 — proces zakończył się sukcesem, nie przerwaniem.
źródło: scraper.log (ostatnia linia), state.json
co nie działa
Brak działającego procesu, brak wpisu PM2/crontab — ale skrypt wykonał się do końca naturalnie, to nie awaria tylko zakończone jednorazowe zadanie.
źródło: ps aux (brak wyniku), scraper.log (kończy się 'GOTOWE')
co do przetestowania
state.json pokazuje 32 done_slugs z 34 w kodzie, a slugs.txt ma 36 pozycji — rozjazd sugeruje edycję list między przebiegami, nie wiadomo czy celową.
źródło: porównanie slugs.txt (36) vs SLUGS w kodzie (34) vs state.json (32)
rekomendacja
15GB zajmuje istotną część dysku bez jasnego konsumenta danych — warto wskazać projekt który z tego skorzysta albo przenieść pliki poza główny wolumen.
źródło: df -h /var/www (82% used), du -sh pdfs (15G)