Python结合Selenium抓取datetimepicker日期值后,如何转换实现日期比较
通用日期值转换实现方案
核心逻辑
摒弃硬编码固定日期格式的解析思路,依托具备多格式自动识别能力的日期解析工具,将页面获取到的任意格式日期字符串,转换为可直接参与运算比较的标准日期对象。整个过程不需要提前预知页面的日期展示规则,就算后续站点调整日期展示格式,也不需要改动解析逻辑。
实现步骤
- 引入支持多格式自动识别的日期解析依赖,无需手动枚举所有可能的日期格式匹配规则
- 完全保留原有Selenium读取页面元素value属性的取值流程,不对现有代码做侵入式修改
- 将读取到的原始日期字符串直接传入解析函数,得到可直接开展比较操作的标准
datetime对象
可直接复用的代码示例
- 安装对应的解析依赖:
pip install dateparser - 完整业务代码:
import dateparser from datetime import datetime # 原有取值逻辑完全保留,无需修改 # 旧版Selenium写法可直接沿用:Checkdate = driver.find_element_by_id("SelectedDate") Checkdate = driver.find_element(by="id", value="SelectedDate") Datevalue = Checkdate.get_attribute('value') print("Earliest Date is " + Datevalue) # 通用转换环节:无需手动匹配日期格式 standard_date = dateparser.parse(Datevalue) # 后续可直接开展任意日期比较操作,比如和当前时间计算差值 time_delta = standard_date - datetime.now() print(f"距离所选日期还有{time_delta.days}天")
适配特性
- 可自动识别包括
23 Mar 2021、2021-03-23、3/23/2021等绝大多数datetimepicker组件输出的通用日期格式,哪怕后续站点调整日期展示写法,只要是常规人类可读的日期表达,都能正常解析,不需要调整原有代码 - 支持多语言本地化的日期格式识别,遇到中文、其他语言的日期展示场景,只需在解析函数中补充对应语言参数即可,无需单独编写格式匹配规则
- 解析得到的标准
datetime对象,支持所有内置的日期大小比较、差值计算、格式导出操作,完全满足跨日期值比对的业务需求
内容的提问来源于stack exchange,提问作者raphael
相关产品推荐
相关产品推荐

