You need to enable JavaScript to run this app. Selenium获取div元素data-id属性值时如何避免输出None值
优惠活动
大模型
产品
解决方案
定价
更多

Selenium获取div元素data-id属性值时如何避免输出None值

Selenium精准提取div元素data-id属性值的调整方案

问题根因

当前代码通过find_elements_by_tag_name('div')拉取了页面上全部的div元素,再逐个尝试读取data-id属性。由于页面上绝大多数div都不存在data-id这个自定义属性,get_attribute()读取不存在的属性时会直接返回None,最终输出就会混杂大量无意义的空值。

优化调整思路

  • 从定位环节缩小范围,不再全页面遍历div节点,直接用属性匹配选择器筛选带data-id的目标元素,从源头杜绝无属性元素进入遍历流程
  • 在属性读取环节增加空值过滤兜底,确保存入结果集的都是有效属性值

调整后的参考代码

旧版本的find_elements_by_*系列定位方法已逐步废弃,推荐使用标准Selenium定位写法,首先需要导入定位枚举类:

from selenium.webdriver.common.by import By

def PID():
    record = []
    for page in range(1, 10):
        path = get_link('sugar')
        driver.get(path)
        driver.get(path.format(page))
        # 精准匹配所有带data-id属性的div元素,过滤掉无目标属性的节点
        target_nodes = driver.find_elements(By.CSS_SELECTOR, 'div[data-id]')
        for node in target_nodes:
            attr_value = node.get_attribute('data-id')
            # 兜底过滤空值,避免None混入结果
            if attr_value:
                record.append(attr_value)
                print(attr_value)
    return record

可选精度优化

如果目标div除了自带data-id之外,还有固定的类名、结构层级特征,可以进一步收紧CSS选择器的匹配范围。比如目标div属于goods-item类名的节点,就可以把选择器改为div.goods-item[data-id],进一步避免误抓同属性的无关节点,提升提取准确率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 23:45:04