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

如何统一Python爬虫从HTML标签提取的文章发布日期格式

针对多站点发布日期统一解析的Python解决方案

优先提取结构化标准化字段

你首先可以优先抓取页面中已经是标准格式的时间字段,不需要解析自然语言文本,准确率接近100%:

  • <time>标签自带的datetime属性,几乎所有合规站点的该属性值都是ISO 8601格式,直接提取即可使用
  • 页头<meta>标签的结构化数据,比如og:published_time、article:published_time对应的content值
  • 页面内嵌的JSON-LD结构化数据中的datePublished字段,同样默认是标准时间格式

通用时间解析工具

如果上述结构化字段不存在,再解析你提取到的自然语言时间文本,两个Python库可以覆盖你列出的所有格式场景:

  1. python-dateutil 的 parser 模块
    可以解析绝大多数标准化的自然语言时间格式,支持自定义时区映射,示例用法:
    from dateutil import parser
    from dateutil.tz import gettz
    
    # 直接解析带时区的时间文本
    parsed_dt = parser.parse(
        "Updated Aug. 18, 2021 3:54 pm ET",
        tzinfos={"ET": gettz("America/New_York")},
        fuzzy=True # 自动忽略“Updated”“Published”这类无关前缀
    )
    
  2. dateparser 库
    专门适配各种非标准时间格式,原生支持相对时间(比如6 hours ago)、多语言时间表述、自动时区检测,不需要额外写规则就能覆盖绝大多数场景,示例用法:
    import dateparser
    
    # 支持相对时间解析
    parsed_dt = dateparser.parse(
        "Published  6 hours ago",
        settings={"PREFER_DATES_FROM": "past", "TIMEZONE": "America/New_York"}
    )
    

输出适配Swift服务端

所有解析得到的Python datetime对象,统一转换为UTC时区的ISO 8601格式字符串即可,Swift的Date类型原生支持直接解析该格式,不需要额外处理:

# 转UTC时区后输出ISO格式字符串
iso_dt_str = parsed_dt.astimezone().isoformat()

扩展适配更多站点的建议

后续新增出版商站点时,你可以把每个站点的时间提取规则(比如对应的CSS选择器、默认时区配置)单独存为配置文件,不需要修改核心解析逻辑,维护成本极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:54:04