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

使用Selenium获取python.org事件列表时触发InvalidSelectorException异常求助

解决Selenium获取python.org事件列表的InvalidSelectorException异常

问题根源

  • 选择器类型不匹配:你用By.CLASS_NAME却传入了.event-widget time这种CSS复合选择器,CLASS_NAME只能接受单个类名,这直接触发了异常。
  • 元素获取方法错误:要获取多个事件时间元素,得用find_elements而非find_element,后者只返回单个元素,遍历会报错。
  • 路径转义问题:Windows路径里的\在Python中是转义字符,直接写会导致解析错误,需要改成原始字符串(加r前缀)或者把\替换为\\。

修正后的代码

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

# 用原始字符串处理Windows路径,避免转义问题
chrome_driver_path = r"C:\development\chromedriver.exe"

driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get("https://python.org")

# 改用By.CSS_SELECTOR传入复合选择器,同时用find_elements获取所有匹配元素
event_times = driver.find_elements(By.CSS_SELECTOR, ".event-widget time")

for time in event_times:
    print(time.text)

# 用完浏览器记得退出,避免残留进程
driver.quit()

另一种写法(分步定位)

如果坚持想用类名定位,可以先找到事件容器,再在容器内查找time元素:

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

chrome_driver_path = r"C:\development\chromedriver.exe"
driver = webdriver.Chrome(executable_path=chrome_driver_path)
driver.get("https://python.org")

event_widget = driver.find_element(By.CLASS_NAME, "event-widget")
event_times = event_widget.find_elements(By.TAG_NAME, "time")

for time in event_times:
    print(time.text)

driver.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 18:35:23