This commit is contained in:
2025-07-02 06:46:24 +00:00
parent 4da00fdfe8
commit d08b308bf8

View File

@@ -20,6 +20,7 @@ setup_logging(log_level=logging.DEBUG if Config.DEBUG else logging.INFO)
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# ... (Kontext: Zeile davor)
class DealfrontScraper: class DealfrontScraper:
""" """
Kapselt alle Interaktionen mit der Dealfront-Plattform mittels Selenium. Kapselt alle Interaktionen mit der Dealfront-Plattform mittels Selenium.
@@ -28,6 +29,7 @@ class DealfrontScraper:
def __init__(self): def __init__(self):
""" """
Initialisiert den WebDriver und den WebDriverWait. Initialisiert den WebDriver und den WebDriverWait.
Verwendet den system-installierten chromedriver im Docker-Container.
""" """
logger.info("Initialisiere den DealfrontScraper und den Chrome WebDriver.") logger.info("Initialisiere den DealfrontScraper und den Chrome WebDriver.")
chrome_options = ChromeOptions() chrome_options = ChromeOptions()
@@ -38,21 +40,19 @@ class DealfrontScraper:
chrome_options.add_argument("--disable-dev-shm-usage") chrome_options.add_argument("--disable-dev-shm-usage")
chrome_options.add_argument("--window-size=1920,1080") chrome_options.add_argument("--window-size=1920,1080")
chrome_options.add_argument("--disable-blink-features=AutomationControlled") # Anti-Detection-Maßnahmen
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
chrome_options.add_argument("--disable-blink-features=AutomationControlled") chrome_options.add_argument("--disable-blink-features=AutomationControlled")
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False) chrome_options.add_experimental_option('useAutomationExtension', False)
# Stellt sicher, dass der korrekte ChromeDriver automatisch heruntergeladen und verwendet wird # Da der chromedriver im Dockerfile systemweit installiert wird,
# ist der webdriver-manager nicht mehr nötig. Selenium findet den Treiber von selbst.
try: try:
service = ChromeService(ChromeDriverManager().install()) self.driver = webdriver.Chrome(options=chrome_options)
self.driver = webdriver.Chrome(service=service, options=chrome_options)
# Wichtig, um als "echter" Browser zu erscheinen # Wichtig, um als "echter" Browser zu erscheinen
self.driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})") self.driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
except Exception as e: except Exception as e:
logger.critical(f"WebDriver konnte nicht initialisiert werden. Stellen Sie sicher, dass Chrome installiert ist. Fehler: {e}") logger.critical(f"WebDriver konnte nicht initialisiert werden. Fehler: {e}", exc_info=True)
self.driver = None self.driver = None
raise raise