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

Scrapy开发中如何从提取到的日期时间文本中仅提取日期部分

Scrapy提取文本中指定日期部分的实现方法

你可以选择以下两种方案实现需求,均能稳定提取到目标值Nov 13, 2021。

方案1:提取阶段直接通过Scrapy内置正则过滤

Scrapy选择器自带正则匹配能力,不需要对拿到的原始字符串做二次处理,直接在XPath调用链后使用re_first()方法匹配日期格式即可,代码最简洁:

'datetime': response.xpath('//*[@class="article_byline"]/text()[2]').re_first(r'([A-Z][a-z]{2} \d{1,2}, \d{4})')

正则匹配逻辑:固定匹配「3位英文月份缩写 + 空格 + 1-2位日期数字 + 逗号 + 空格 + 4位年份」的日期格式,自动忽略前导的横杠、空格,以及后缀的具体时间、时区信息。

方案2:获取原始文本后通过Python正则截取

如果你需要同时留存原始时间文本,或是后续还要拆分时间、时区字段,可以先拿到完整原始字符串,再单独做正则匹配:

import re

raw_datetime_str = response.xpath('//*[@class="article_byline"]/text()[2]').get()
date_result = re.search(r'([A-Z][a-z]{2} \d{1,2}, \d{4})', raw_datetime_str)
# 匹配成功则取分组内容,失败则赋值为None避免报错
publish_date = date_result.group(1) if date_result else None

两种方案的适用场景:

  • 方案1代码量少,不需要额外导入模块,适合只需要日期字段、不需要保留原始时间文本的场景
  • 方案2灵活度高,适合需要对原始时间文本做多维度拆分的场景

提示:如果后续站点调整了日期显示格式(比如月份显示全称、日期固定为2位数字),只需要对应调整正则规则即可适配,维护成本很低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:27:18