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

如何用Python Selenium WebDriver提取格式为"2023-04-17"的时间

用Python Selenium提取指定格式时间的正确方法

错误原因分析

你之前的代码存在两个核心问题:

  1. 元素定位失效:第一个代码里的XPATH依赖id="content",但给定的HTML中并没有这个节点,导致无法定位到元素;同时find_element()返回单个元素,不能用for循环遍历。
  2. CSS选择器语法错误:第二个代码里的div.medium-widget event-widget last.time写法错误,多类名需要用点连接,正确写法应为div.medium-widget.event-widget.last time。

两种可行的提取方案

方案1:通过页面文本拼接获取完整日期

利用页面中time标签内的分段文本,拼接成目标格式:

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

driver = webdriver.Chrome()
# 假设已加载目标页面

# 定位time元素
time_element = driver.find_element(By.CSS_SELECTOR, "div.medium-widget.event-widget.last time")
# 提取年份部分和日期部分并拼接
year_segment = time_element.find_element(By.CLASS_NAME, "say-no-more").text
date_segment = time_element.text.strip()
full_date = year_segment + date_segment

print(full_date)  # 输出:2023-04-17

方案2:读取datetime属性直接截取(更高效)

time标签的datetime属性包含标准时间格式,直接截取前10位即可得到目标格式:

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

driver = webdriver.Chrome()
# 假设已加载目标页面

time_element = driver.find_element(By.CSS_SELECTOR, "div.medium-widget.event-widget.last time")
# 获取datetime属性值并截取前10位
full_date = time_element.get_attribute("datetime")[:10]

print(full_date)  # 输出:2023-04-17

更可靠的定位方式

如果不想依赖多类名的完整匹配,也可以用XPATH模糊定位:

time_element = driver.find_element(By.XPATH, "//div[contains(@class, 'event-widget')]//time")

这种方式避免了类名顺序变化导致的定位失效问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:12:38