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

使用Beautiful Soup findAll抓取房产网站返回空列表求助

解决房产价格历史数据提取为空的问题

可能的原因及解决方法

  • 目标表格嵌套在iframe中:不少房产网站会把历史数据这类内容放在iframe里,Selenium默认只会操作主页面DOM,不会自动进入iframe,需要手动切换到对应iframe才能访问内部元素。
  • 静态等待时间不足:time.sleep(5)是固定时长等待,若页面加载缓慢或数据异步渲染,可能导致元素还未生成就开始解析,建议用显式等待替代,直到目标元素出现再执行后续操作。
  • 元素选择器不准确:页面结构可能更新,property-history这个ID可能已失效,需要重新通过浏览器开发者工具(F12)确认目标表格的实际属性。

修改后的代码示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
url= "https://www.properly.ca/buy/home/view/ma-tEpHcSzeES-OlhE-V6A/bc/vancouver/1268-w-broadway-%23720/"
driver.maximize_window()
driver.get(url)

try:
    # 检测并切换到iframe(若存在),可根据实际页面调整iframe定位方式
    iframe = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.TAG_NAME, "iframe"))
    )
    driver.switch_to.frame(iframe)
    
    # 显式等待目标表格加载完成
    WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "property-history"))
    )
    
    # 解析页面内容
    content = driver.page_source.encode('utf-8').strip()
    soup = BeautifulSoup(content,"html.parser")
    officials = soup.findAll("table",{"id":"property-history"})

    for entry in officials:
        print(str(entry))
finally:
    driver.quit()

额外提示

  • 用浏览器开发者工具查看目标表格的实际位置:确认是否在iframe内,以及表格的ID、class等属性是否正确。
  • 若网站有反爬机制,可尝试添加滚动页面、模拟点击等人类操作,触发数据加载。

内容的提问来源于stack exchange,提问作者Vincent Cormier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:50:33