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

如何将BeautifulSoup嵌套元素提取代码转换为Selenium实现提取房产面积数据

Selenium嵌套元素数据提取修改方案

核心思路:Selenium的WebElement实例本身支持子元素查找,你可以直接在每个获取到的clearfix条目元素下,查找对应的inline-group子元素,复用原有文本处理逻辑即可。

修改后可直接运行的代码

from selenium import webdriver
from selenium.webdriver.common.by import By
# 保留你原有定义的if_area_not_speicified函数即可

PATH = '/Applications/chromedriver'
driver = webdriver.Chrome(PATH)

driver.get('https://www.imoti.net/bg/obiavi/r/prodava/sofia/?sid=hSrJhL')

sqm_area = []

def testing_values():
    # 先获取所有class为clearfix的li房源条目
    offer_list = driver.find_elements(By.CLASS_NAME, 'clearfix')
    for one_offer in offer_list:
        try:
            # 在当前条目下嵌套查找class为inline-group的div子元素
            raw_sqm = one_offer.find_element(By.CLASS_NAME, 'inline-group')
            # 文本处理逻辑和你原来的BeautifulSoup版本完全一致
            get_sqm = raw_sqm.text.split(',')[1].split()[0]
            sqm_check_value = if_area_not_speicified(get_sqm)
            sqm_area.append(float(sqm_check_value))
        except Exception:
            # 跳过缺失目标字段的异常条目,避免程序中断
            continue

testing_values()
print(sqm_area)
# 执行完成后记得关闭浏览器驱动
driver.quit()

关键改动说明

  • 新增导入By类,Selenium 4.0及以上版本已不再推荐find_elements_by_*的旧写法,统一使用find_element(By.定位方式, 值)的语法,兼容性更强
  • 遍历每个房源条目元素时,直接在WebElement实例上调用查找方法,即可实现嵌套元素定位,和BeautifulSoup的find逻辑完全对应
  • 直接用WebElement的.text属性获取元素文本内容,替代BeautifulSoup的get_text()方法
  • 增加异常捕获逻辑,避免个别房源缺失目标元素导致整体程序崩溃

可选兼容方案

如果你更习惯原有BeautifulSoup的写法,无需修改原有提取逻辑,只需要将Selenium渲染后的页面源码传给BeautifulSoup即可:

from bs4 import BeautifulSoup
# 省略驱动初始化、打开页面的代码
soup = BeautifulSoup(driver.page_source, 'html.parser')
# 接下来直接复用你原来的get_data逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:24:02