使用Python Selenium解析日期span标签失败,求解决方法
日期解析问题解决建议
问题描述
无法解析格式为2022-11-26的完整日期,使用CSS选择器和Xpath只能获取<span>标签中的2022-内容;尝试代码year = driver.find_element(By.CSS_SELECTOR, ".event-widget time span")获取年份字符串却无输出。对应的HTML结构如下:
<div class="medium-widget event-widget last"> <div class="shrubbery"> <h2 class="widget-title"><span aria-hidden="true" class="icon-calendar"></span>Upcoming Events</h2> <p class="give-me-more"><a href="/events/calendars/" title="More Events">More</a></p> <ul class="menu"> <li> <time datetime="2022-11-26T00:00:00+00:00"><span class="say-no-more">2022-</span>11-26</time> <a href="/events/python-events/1331/">De Ja vu</a></li> <li> <ul>
解决方法
- 直接读取
time元素的datetime属性:这是最可靠的方式,属性里存储了完整标准时间格式,提取后截取日期部分即可:time_element = driver.find_element(By.CSS_SELECTOR, ".event-widget time") full_datetime = time_element.get_attribute("datetime") # 截取得到目标日期2022-11-26 target_date = full_datetime.split('T')[0] - 获取
time元素的完整文本内容:time标签包含<span>和后续日期部分,直接取该元素文本会自动拼接两部分内容:time_element = driver.find_element(By.CSS_SELECTOR, ".event-widget time") full_date = time_element.text.strip() # 得到"2022-11-26" - 排查元素定位的等待问题:若之前代码无输出,大概率是页面未完全加载,添加显式等待确保元素加载完成:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待目标span元素加载完成 span_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, ".event-widget time span")) ) year_part = span_element.text.strip() # 此时可获取到"2022-"
内容的提问来源于stack exchange,提问作者Mriganka Paul
相关产品推荐
相关产品推荐

