You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python Selenium滚动Facebook Meta广告库内部页面?

解决Facebook Meta广告库内部页面滚动问题

针对你找不到正确滚动容器的问题,以下是几种可行的解决方案:

方法1:定位稳定的滚动容器

Facebook的动态class经常更新,建议用更稳定的属性定位承载广告列表的滚动容器:

# 定位广告列表所在的滚动容器
scroll_container = driver.find_element(By.XPATH, '//div[@role="main"]//div[contains(@class, "x1yztbdb")]')
# 执行滚动到底部的脚本
driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_container)

方法2:模拟循环滚动加载内容

如果直接设置scrollTop无效,可以模拟用户滚轮滚动,循环加载直到内容不再更新:

import time

scroll_container = driver.find_element(By.XPATH, '//div[@role="main"]')
last_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)

while True:
    # 滚动到容器底部
    driver.execute_script("arguments[0].scrollTop = arguments[0].scrollHeight", scroll_container)
    # 等待新内容加载
    time.sleep(3)
    # 获取更新后的容器高度
    new_height = driver.execute_script("return arguments[0].scrollHeight", scroll_container)
    # 高度不变则停止滚动
    if new_height == last_height:
        break
    last_height = new_height

方法3:通过广告元素触发滚动

若仍定位不到容器,可通过定位最后一条广告,滚动到该元素位置来触发加载:

import time

while True:
    # 定位所有广告元素
    ads = driver.find_elements(By.XPATH, '//div[@data-ad-preview-id]')
    if not ads:
        break
    # 滚动到最后一条广告的位置
    driver.execute_script("arguments[0].scrollIntoView({block: 'end'});", ads[-1])
    time.sleep(2)
    # 检查是否有新广告加载
    new_ads_count = len(driver.find_elements(By.XPATH, '//div[@data-ad-preview-id]'))
    if new_ads_count == len(ads):
        break

说明:Facebook的class为动态生成,会频繁变更,优先使用role、data-*这类稳定属性定位元素,避免依赖易变的class值。

内容的提问来源于stack exchange,提问作者Adnan Zafar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 02:05:06