Python Selenium爬虫中如何判断日期值是否属于指定日期列表
问题根因
当前判断逻辑存在数据类型匹配错误:
- 当
listdate赋值为单个日期字符串时,和lp.get_attribute('title')取到的字符串值做==比较属于同类型等值判断,逻辑可正常运行 - 当
listdate赋值为日期列表时,直接用字符串类型的title值和整个列表做==等值判断,二者数据类型不同,值永远不可能相等,因此始终返回False,无法命中多日期匹配规则
修复方案
将等值判断替换为成员判断,即校验当前抓取到的日期字符串是否存在于目标日期列表中,使用Python内置的in运算符即可实现,修正后可运行代码如下:
from selenium.webdriver.common.by import By # 配置需要匹配的目标日期列表 listdate = ['Jun 23, 2022', 'Jun 24, 2022', 'Jun 25, 2022'] lp = driver.find_element(By.CSS_SELECTOR, 'div > time') # 抓取元素title属性,.strip()用于去除首尾可能存在的空格、换行等空白字符,避免格式问题导致匹配失败 current_date = lp.get_attribute('title').strip() # 判断当前日期是否属于目标日期范围 lpval = current_date in listdate print(lpval) if lpval: print('Do somethin') else: print('Stop')
补充说明:如果后续需要新增匹配日期,直接往
listdate列表中追加对应格式的日期字符串即可,无需修改核心判断逻辑。如果遇到日期明明在列表中却匹配失败的情况,先打印current_date核对实际抓取到的值,确认是否存在大小写差异、特殊字符、格式不一致的问题。
内容的提问来源于stack exchange,提问作者Bobby Wibowo
相关产品推荐
相关产品推荐

