Scraping portali ogłoszeniowych i licytacji komorniczych
Jak w tytule, posiadam następujący program zainstalowany na zewnętrznym serwerze, natomiast jest stosunkowo awaryjny.
Chodzi o przejrzenie kodu posiadanego rozwiązania i jego optymalizację.
Mile widziana również wiedza co do skutecznych proxy.
Projekt to asynchroniczny system do scrapingu, oparty na architekturze rozproszonej. Stack:
• Backend / Panel Zarządzania: Flask (Flask, Flask-Login)
• Silnik Scrapujący: Selenium + Selenium-Wire (selenium-wire, webdriver-manager) do obsługi dynamicznego JS i przechwytywania ruchu sieciowego, wspierany przez Aquarius Splash.
• Parsing Danych: BeautifulSoup4 (html5lib) oraz standardowe requests.
• Obsługa Zadań Asynchronicznych: Celery – procesy scrapowania są kolejkowane i przetwarzane w tle.
• Bazy Danych (Dual-DB):
o Relacyjna: PostgreSQL (psycopg2-binary) + SQLAlchemy (ORM) – do przechowywania ustrukturyzowanych danych wynikowych (w strukturze są gotowe migrations).
o NoSQL: MongoDB (pymongo) – prawdopodobnie do dumpowania surowego kodu HTML/JSON przed parsowaniem.
• Infrastruktura i Monitorowanie:
o Docker (docker-compose.yml) – cały projekt jest skonteneryzowany.
o Tenacity – zaawansowany mechanizm automatycznych retry-ów w przypadku błędów połączenia (istotne przy blokadach/timeoutach stron rządowych).
o Zmienne środowiskowe: python-dotenv.