From c8fcfd7a4d013f1f2f9a75861c822f2af5d41e0f Mon Sep 17 00:00:00 2001 From: Michael SCHAL Date: Sat, 29 Nov 2025 19:51:34 +0100 Subject: [PATCH] feat: Add Bonial.fr scraper service for promotional catalogs. --- app/services/bonial_scraper.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/services/bonial_scraper.py b/app/services/bonial_scraper.py index a07026d..825f783 100644 --- a/app/services/bonial_scraper.py +++ b/app/services/bonial_scraper.py @@ -371,6 +371,7 @@ async def scrape_enseigne( async def scrape_all_enseignes(db: Session) -> list[ScrapingLog]: """ Scrape all active enseignes. + Uses Browserless service via WebSocket. Args: db: Database session @@ -378,13 +379,20 @@ async def scrape_all_enseignes(db: Session) -> list[ScrapingLog]: Returns: List of ScrapingLog objects """ + import os + enseignes = db.query(Enseigne).filter_by(is_active=True).all() logger.info(f"Starting scraping for {len(enseignes)} active enseignes") logs = [] + # Get Browserless URL from environment + browserless_url = os.environ.get("BROWSERLESS_URL", "ws://browserless:3000") + logger.info(f"Connecting to Browserless at {browserless_url}") + async with async_playwright() as p: - browser = await p.chromium.launch(headless=True) + # Connect to Browserless instead of launching local browser + browser = await p.chromium.connect_over_cdp(browserless_url) for enseigne in enseignes: try: