全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何在 Selenium 中精准定位并提取非隐藏的表格行元素

本文介绍如何使用 css 选择器的 `:not()` 伪类,在 selenium(v4.17.2+)中高效筛选出未被 `style="display: none;"` 隐藏的 `

` 行元素,避免遍历无效节点导致的性能下降。

在 Web 自动化数据采集场景中,常遇到表格(

)内部分 行通过内联样式 style="display: none;" 动态隐藏。若直接用 By.CLASS_NAME 或 By.TAG_NAME 获取所有行再逐个判断 is_displayed(),不仅逻辑冗余,还会因大量无效元素触发冗余 DOM 查询和渲染状态检查,显著拖慢执行速度——尤其在含数百行的动态表格中尤为明显。

推荐采用 CSS 选择器原生过滤 方案,利用浏览器引擎的高效匹配能力,在查找阶段即排除隐藏节点。针对问题中的 HTML 结构:

可使用如下精确选择器:

from selenium.webdriver import By

results = driver.find_elements(
    By.CSS_SELECTOR, 
    "tr.items:not([style='display: none;'])"
)

优势说明:

  • tr.items 精准匹配带 class="items" 的行;
  • :not([style='display: none;']) 排除 style 属性值严格等于 "display: none;" 的元素(注意:不匹配 style="display: none; margin: 0;" 等复合值);
  • 全程由浏览器原生 CSS 引擎执行,零 Python 层循环,性能最优。

⚠️ 注意事项:

  • 若目标元素的 style 属性可能包含其他样式(如 style="display: none; opacity: 0;"),上述写法将失效。此时需改用 XPath 或 JavaScript 执行更灵活的判断:

    results = driver.find_elements(
        By.XPATH, 
        "//tr[@class='items' and not(contains(@style, 'display: none'))]"
    )
  • is_displayed() 方法虽语义清晰,但不应在 find_elements 后补过滤(如 [el for el in els if el.is_displayed()]),因其会强制触发每元素的布局计算,严重降低效率;

  • 确保页面已完全加载且目标元素已渲染完成,必要时配合显式等待:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    wait = WebDriverWait(driver, 10)
    visible_rows = wait.until(
        EC.presence_of_all_elements_located(
            (By.CSS_SELECTOR, "tr.items:not([style='display: none;'])")
        )
    )

综上,善用现代 CSS 选择器的 :not()、属性匹配等能力,是提升 Selenium 数据提取效率的关键实践。在兼容 Selenium 4+ 的项目中,应优先选择声明式选择器而非运行时过滤。


# css  # javascript  # python  # java  # html  # 浏览器  # ai  # webdriver 


相关文章: 建站之星如何开启自定义404页面避免用户流失?  个人摄影网站制作流程,摄影爱好者都去什么网站?  ,如何利用word制作宣传手册?  如何选择香港主机高效搭建外贸独立站?  建站主机如何安装配置?新手必看操作指南  如何通过老薛主机一键快速建站?  想学网站制作怎么学,建立一个网站要花费多少?  宝塔建站教程:一键部署配置流程与SEO优化实战指南  北京营销型网站制作公司,可以用python做一个营销推广网站吗?  建站OpenVZ教程与优化策略:配置指南与性能提升  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  h5网站制作工具有哪些,h5页面制作工具有哪些?  如何选择适配移动端的WAP自助建站平台?  如何在阿里云香港服务器快速搭建网站?  为什么Go需要go mod文件_Go go mod文件作用说明  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  建站之星安装路径如何正确选择及配置?  外贸公司网站制作哪家好,maersk船公司官网?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  股票网站制作软件,网上股票怎么开户?  如何通过虚拟主机快速搭建个人网站?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  如何获取开源自助建站系统免费下载链接?  新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?  建站之星与建站宝盒如何选择最佳方案?  无锡营销型网站制作公司,无锡网选车牌流程?  网站制作公司广州有几家,广州尚艺美发学校网站是多少?  北京制作网站的公司,北京铁路集团官方网站?  如何高效搭建专业期货交易平台网站?  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作门户网站的参考文献在哪,小说网站怎么建立?  如何高效完成自助建站业务培训?  简历在线制作网站免费版,如何创建个人简历?  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  如何用5美元大硬盘VPS安全高效搭建个人网站?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  公司网站的制作公司,企业网站制作基本流程有哪些?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  建站之星如何优化SEO以实现高效排名?  高防服务器租用首荐平台,企业级优惠套餐快速部署  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  昆明高端网站制作公司,昆明公租房申请网上登录入口?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何做网站制作流程,*游戏网站怎么搭建?  西安专业网站制作公司有哪些,陕西省建行官方网站?  开源网站制作软件,开源网站什么意思?  小程序网站制作需要准备什么资料,如何制作小程序? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。