Python-Selenium-Xpath获取Web表格中Span标签文本问题求助
解决Selenium提取span标签中日期的问题
目标HTML结构
<td style="padding:2px 2px 2px 5px;width:25%;white-space:nowrap;text-align:left;"> <span tabindex="0">11/29/2023 04:01:10</span>
问题分析
你之前的代码里,CSS选择器td.padding是错误的——padding是td的style属性值,不是class属性,所以无法定位到目标元素。另外,time.sleep稳定性差,建议用显式等待替代。
修正后的代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC DRIVER_PATH = 'C:\\Program Files (x86)\\Selenium Client\\Selenium Drivers\\chromedriver.exe' service = Service(executable_path=DRIVER_PATH) options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=service, options=options) URL = 'https://www.test.com' driver.get(URL) # 用显式等待确保元素加载完成,替代time.sleep wait = WebDriverWait(driver, 20) # 方式1:通过td的style特征定位子span date_span = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "td[style*='padding:2px 2px 2px 5px'] > span"))) # 方式2:直接通过span的tabindex属性定位(如果该属性唯一) # date_span = wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span[tabindex='0']"))) # 获取完整的日期时间文本 full_datetime = date_span.text print("完整日期时间:", full_datetime) # 若只需要日期部分(分割空格取前半段) date_only = full_datetime.split(' ')[0] print("仅日期:", date_only) driver.quit()
关键说明
- 定位修正:去掉错误的
td.padding选择器,改用能匹配目标元素的CSS规则;如果页面中有多个相同tabindex的span,优先用td的style特征缩小范围。 - 显式等待:
WebDriverWait会等待元素可见后再执行操作,比固定时长的time.sleep更可靠。 - 日期提取:如果只需要日期部分,用
split(' ')[0]分割字符串即可。
内容的提问来源于stack exchange,提问作者Sparrow
相关产品推荐
相关产品推荐

