0

0

解决 Selenium WebDriver 运行时出现的 TypeError

花韻仙語

花韻仙語

发布时间:2025-10-07 15:23:24

|

541人浏览过

|

来源于php中文网

原创

解决 selenium webdriver 运行时出现的 typeerror

本文旨在帮助开发者解决在使用 Selenium WebDriver 时遇到的 TypeError 问题。通过分析问题代码,找出错误根源,并提供修改后的代码示例,确保程序能够正确运行,成功抓取网页数据。本文将重点讲解如何使用正确的 find_elements 方法以及如何选择合适的选择器。

问题分析

在提供的代码中,问题出在使用 driver.find_elements_by_css_selector 方法。该方法在较旧版本的 Selenium 中可用,但在新版本中已被弃用,取而代之的是更通用的 driver.find_elements() 方法,并且需要明确指定查找元素的策略,例如 By.CSS_SELECTOR。

解决方案

要解决这个问题,需要将代码中的 driver.find_elements_by_css_selector 方法替换为 driver.find_elements() 方法,并使用 By.CSS_SELECTOR 来指定使用 CSS 选择器。

以下是修改后的代码示例:

from selenium import webdriver
from selenium.webdriver.common.by import By

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach", True)

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://www.python.org/")

event_times = driver.find_elements(By.CSS_SELECTOR, ".event-widget time")
event_names = driver.find_elements(By.CSS_SELECTOR, ".event-widget li a")
events = {}

for n in range(len(event_times)):
    events[n] = {
        "time": event_times[n].text,
        "name": event_names[n].text,
    }

print(events)

driver.quit()

代码解释:

ShopNC多用户商城
ShopNC多用户商城

ShopNC多用户商城,全新的框架体系,呈现给您不同于以往的操作模式,更简约的界面,更流畅的搜索机制,更具人性化的管理后台操作,更适应现在网络的运营模式解决方案,为您的创业之路打下了坚实的基础,你们的需求就是我们的动力。我们在原有的C-C模式的基础上更增添了时下最流行的团购频道,进一步的为您提高用户的活跃度以及黏性提供帮助。ShopNC商城系统V2.4版本新增功能及修改功能如下:微商城频道A、商城

下载
  1. from selenium.webdriver.common.by import By: 导入 By 类,用于指定查找元素的策略。
  2. driver.find_elements(By.CSS_SELECTOR, ".event-widget time"): 使用 find_elements() 方法,第一个参数指定查找策略为 CSS 选择器,第二个参数为 CSS 选择器表达式。
  3. driver.find_elements(By.CSS_SELECTOR, ".event-widget li a"): 同上,查找所有符合 CSS 选择器 .event-widget li a 的元素。

其他查找元素策略

除了 By.CSS_SELECTOR,Selenium 还提供了其他几种查找元素的策略:

  • By.ID: 通过元素的 ID 属性查找。
  • By.NAME: 通过元素的 NAME 属性查找。
  • By.XPATH: 通过 XPath 表达式查找。
  • By.LINK_TEXT: 通过链接文本查找。
  • By.PARTIAL_LINK_TEXT: 通过部分链接文本查找。
  • By.CLASS_NAME: 通过元素的 CLASS 属性查找。
  • By.TAG_NAME: 通过元素的标签名查找。

选择合适的查找策略取决于具体的网页结构和元素特征。一般来说,ID 选择器是最快和最可靠的,其次是 CSS 选择器,XPath 选择器则更加灵活,但性能相对较差。

注意事项

  • 确保 Selenium 和 WebDriver 的版本兼容。不兼容的版本可能会导致各种错误。
  • 在使用 CSS 选择器或 XPath 表达式时,要仔细检查表达式的正确性,避免出现语法错误或选择器无法匹配到元素的情况。可以使用浏览器的开发者工具来辅助调试选择器。
  • 在循环遍历 find_elements() 返回的元素列表时,要确保列表不为空,否则可能会出现 IndexError。
  • 在完成网页数据抓取后,务必调用 driver.quit() 方法关闭浏览器,释放资源。

总结

通过将 driver.find_elements_by_css_selector 替换为 driver.find_elements(By.CSS_SELECTOR, ...),可以解决 Selenium WebDriver 运行时出现的 TypeError 问题。同时,了解不同的查找元素策略,并根据实际情况选择合适的策略,可以提高代码的效率和可靠性。希望本文能够帮助开发者更好地使用 Selenium WebDriver 进行网页数据抓取。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

469

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

13

2025.12.06

li是什么元素
li是什么元素

li是HTML标记语言中的一个元素,用于创建列表。li代表列表项,它是ul或ol的子元素,li标签的作用是定义列表中的每个项目。本专题为大家li元素相关的各种文章、以及下载和课程。

419

2023.08.03

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

165

2026.01.28

包子漫画在线官方入口大全
包子漫画在线官方入口大全

本合集汇总了包子漫画2026最新官方在线观看入口,涵盖备用域名、正版无广告链接及多端适配地址,助你畅享12700+高清漫画资源。阅读专题下面的文章了解更多详细内容。

34

2026.01.28

ao3中文版官网地址大全
ao3中文版官网地址大全

AO3最新中文版官网入口合集,汇总2026年主站及国内优化镜像链接,支持简体中文界面、无广告阅读与多设备同步。阅读专题下面的文章了解更多详细内容。

73

2026.01.28

php怎么写接口教程
php怎么写接口教程

本合集涵盖PHP接口开发基础、RESTful API设计、数据交互与安全处理等实用教程,助你快速掌握PHP接口编写技巧。阅读专题下面的文章了解更多详细内容。

2

2026.01.28

php中文乱码如何解决
php中文乱码如何解决

本文整理了php中文乱码如何解决及解决方法,阅读节专题下面的文章了解更多详细内容。

4

2026.01.28

Java 消息队列与异步架构实战
Java 消息队列与异步架构实战

本专题系统讲解 Java 在消息队列与异步系统架构中的核心应用,涵盖消息队列基本原理、Kafka 与 RabbitMQ 的使用场景对比、生产者与消费者模型、消息可靠性与顺序性保障、重复消费与幂等处理,以及在高并发系统中的异步解耦设计。通过实战案例,帮助学习者掌握 使用 Java 构建高吞吐、高可靠异步消息系统的完整思路。

8

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

CSS教程
CSS教程

共754课时 | 24.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号