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

如何用Python的Selenium以简洁Pythonic风格实现租房公寓信息抓取并生成字典列表

更Pythonic的Selenium租房信息抓取实现

嘿,我来帮你把这段租房信息抓取的代码改得更简洁、更符合Python风格!咱们可以把单页信息提取的逻辑封装成函数,再结合列表推导式替代冗长的循环,同时处理好元素缺失的异常情况,让代码既简洁又健壮。

优化后的代码示例

from selenium.common.exceptions import NoSuchElementException

# 提前定义需要的目标字段及默认值,确保最终字典不会缺失key
REQUIRED_FIELDS = {
    'Property type': 'not available',
    'room': 'not available',
    'Floor': 'not available',
    'Living space': 'not available',
    'Year of construction': 'not available'
}

def extract_apartment_info(driver, link):
    """提取单个公寓页面的关键信息"""
    driver.get(link)
    temp_data = {}
    try:
        # 获取键和对应值的元素列表
        header_elements = driver.find_elements_by_class_name("css-cyiock.excbu0j2")
        value_elements = driver.find_elements_by_class_name("css-1ush3w6.excbu0j2")
        # 将元素文本配对成临时字典
        temp_data = {h.text.strip(): v.text.strip() for h, v in zip(header_elements, value_elements)}
    except NoSuchElementException:
        # 若元素找不到,直接返回默认值字典
        pass
    
    # 合并默认字段与抓取到的数据,缺失字段自动保留默认值
    apartment_info = REQUIRED_FIELDS.copy()
    apartment_info.update(temp_data)
    return apartment_info

# 用列表推导式生成最终的字典列表,简洁直观
key_data = [extract_apartment_info(driver, link) for link in links]

核心优化点

  • 函数封装:把单页信息提取的逻辑独立成函数,代码更模块化,可读性和复用性大幅提升
  • 列表推导式:替代传统for循环加append的写法,完全贴合Python简洁的语法风格
  • 默认值兜底:提前定义必填字段的默认值,确保最终每个字典都包含你需要的所有key
  • 异常处理:捕获元素找不到的异常,避免单个页面出错导致整个抓取流程中断

这样写出来的代码既简洁易读,又能应对页面结构不一致的情况,完美满足你的需求!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:18:12