| 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() |