from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager import time class FacebookScraper: def __init__(self): self.driver = self._setup_driver() def _setup_driver(self): options = webdriver.ChromeOptions() options.add_argument("--headless") options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") return webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) def scrape_ads(self, search_query, num_scrolls=3): url = f"https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=ALL&q={search_query}&search_type=keyword" self.driver.get(url) time.sleep(5) # Wait for page to load ads = [] for _ in range(num_scrolls): self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(3) ad_elements = self.driver.find_elements(By.CSS_SELECTOR, "div.x1yztbdb") for ad in ad_elements: try: ads.append(ad.text) except Exception as e: print("Error extracting ad:", e) return ads def close(self): self.driver.quit()