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

如何解决Selenium爬取Facebook Marketplace无限滚动重复读取问题

解决Selenium爬取Facebook Marketplace重复读取房源的问题

你当前代码的核心问题是每次滚动页面后重新获取全部房源元素,然后从头遍历整个列表,导致之前已经处理过的前24条被重复读取。

解决方案思路

维护一个记录已处理房源的唯一标识集合,每次只处理新增的未被记录过的房源:

  • 用房源的页面唯一属性(比如Facebook给每个房源分配的data-id、详情页链接等)作为去重标识,避免重复处理。
  • 初始加载后,遍历处理未在集合中的条目,处理完将标识存入集合。
  • 滚动页面后,重新获取所有房源元素,过滤出不在集合中的新增条目,只处理这些内容。

修改后的代码示例

from selenium.webdriver.common.by import By
import random
from time import sleep

# 初始化已处理房源的标识集合,用页面元素的唯一属性(这里假设用data-id,需根据实际页面调整)
processed_listings = set()

# 初始获取所有房源元素
current_listings = driver.find_elements(By.XPATH, '//div[@class="x3ct3a4"]')

while True:
    # 遍历当前房源,跳过已处理的条目
    for listing in current_listings:
        # 获取房源的唯一标识,替换成你实际找到的页面属性
        listing_id = listing.get_attribute('data-id')
        if listing_id in processed_listings:
            continue
        
        sleep(random.randint(1, 2))
        # 点击打开房源详情
        listing.click()
        sleep(random.randint(1, 2))
        
        # 这里读取你需要的房源数据(示例:标题、价格等)
        # title = driver.find_element(By.XPATH, '//h1[contains(@class, "x193iq5w")]').text
        # price = driver.find_element(By.XPATH, '//span[contains(@class, "x193iq5w")]').text
        
        # 关闭详情页
        close_button = driver.find_element(By.XPATH, close_xpath)
        close_button.click()
        sleep(random.randint(1, 2))
        
        # 将已处理的房源标识加入集合
        processed_listings.add(listing_id)
    
    # 滚动页面加载更多房源
    driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
    sleep(random.randint(2, 4))
    
    # 重新获取所有房源元素
    current_listings = driver.find_elements(By.XPATH, '//div[@class="x3ct3a4"]')
    
    # 退出条件:如果没有新增房源,终止循环
    if len(current_listings) == len(processed_listings):
        print("已加载完所有房源,停止爬取")
        break

关键说明

  • 确认房源元素的唯一属性:如果data-id不存在,可以用房源详情页的href链接、或者标题+价格的组合作为标识(优先用页面自带的唯一ID,避免重复风险)。
  • 新增了循环终止条件,防止页面到底后无限滚动。
  • 每次循环只处理未被记录的新增房源,彻底解决重复读取问题。

内容的提问来源于stack exchange,提问作者John Smith

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 15:45:23