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

Python爬虫日期解析报错:'Sept 26 2022'不匹配'%b %d %Y'格式

问题排查与解决

核心错误原因

  1. Locale不匹配:datetime.strptime默认依赖系统本地语言环境,如果你的系统locale不是英文,无法识别英文月份缩写"Sept",这是格式不匹配的主要诱因。
  2. 代码语法错误:datetime_obj.enter code heredate()是无效语法,应改为datetime_obj.date()。
  3. 变量名混乱:published_Date和Published_Date大小写混用,容易引发逻辑疏漏。

解决方案

方案1:手动设置英文locale(适配标准格式日期)

导入locale模块强制英文环境,同时修正代码中的变量与语法问题:

from datetime import datetime
import locale

# 设置英文locale(不同系统参数有差异,Windows可尝试'English_US')
try:
    locale.setlocale(locale.LC_TIME, 'en_US.UTF-8')
except:
    locale.setlocale(locale.LC_TIME, 'C')  # 备选方案,强制使用C标准locale

# 优化后的日期解析逻辑
published_date_parts = soup.find('time', class_="relative z-1").get_text(strip=True).split(", ")
published_date = " ".join(published_date_parts[:2]).replace(',', '').replace('.', '')
# 去除首尾空白后再解析,避免多余空格干扰格式匹配
datetime_obj = datetime.strptime(published_date.strip(), '%b %d %Y')
published_date = datetime_obj.date()
print("Published Date:", published_date)

方案2:使用python-dateutil自动解析(更省心,兼容多格式)

不想处理locale问题的话,推荐用python-dateutil库自动识别日期格式:

  1. 先安装依赖:
pip install python-dateutil
  1. 简化后的代码:
from datetime import datetime
from dateutil.parser import parse

published_date_text = soup.find('time', class_="relative z-1").get_text(strip=True)
# fuzzy=True会自动忽略非日期内容,直接提取有效日期
datetime_obj = parse(published_date_text, fuzzy=True)
published_date = datetime_obj.date()
print("Published Date:", published_date)

额外优化点

原代码中循环拼接字符串的方式冗余,用" ".join()替代更简洁高效;调用get_text(strip=True)后,再用strip()处理最终拼接结果,能彻底避免多余空格引发的匹配问题。

内容的提问来源于stack exchange,提问作者Info Rewind

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:41:13