0

我正在使用 python 脚本从许多出版商的网站上抓取文章的发布日期。此数据可在 HTML 属性或标签中找到,这些属性或标签由“时间”、“时间戳”和“发布日期”等各种标识,并以例如以下格式提供时间:

<time class="timestamp article__timestamp flexbox__flex--1"> Updated Aug. 18, 2021 3:54 pm ET </time>

<time class="css-x7rtpa e16638kd0" datetime="2021-08-18T19:10:54-04:00">Aug. 18, 2021</time>

<time datetime="2021-08-18T15:45:33-04:00"><span class="date">August 18, 2021</span><span class="time">3:45 PM ET</span></time>

<div class="timestamp"><span aria-label="Published on August 19, 2021 12:36 AM ET" class="timestamp__date--published"><span aria-hidden="true">08/19/2021 12:36 am ET</span></span></div>

<div class="article-date"><strong>Published</strong> <time> 8 hours ago</time></div>

'published_time': '2021-08-18T05:33:59Z

这就是我从这些 HTML 标记中获取这些日期的文本后通常的样子:

Aug. 18, 2021 6:56 am ET

Aug. 18, 2021

Updated Aug. 18, 2021 3:54 pm ET

Published 6 hours ago

2021-08-18T08:00:00Z

我计划在未来抓取更多出版商的网站,所以在我编写自己的脚本之前,我很好奇是否存在统一这种格式的现有解决方案或框架。

上面的标签和生成的文本没有以 1:1 的关系显示,因为有足够的变化,以至于除了编写我自己的脚本之外,这对于解决方案来说有点无关紧要。到目前为止,我发现的解决方案引用了 Javascript 中的统一日期,但在从 HTML 标记中提取时却没有。

这些日期最终将由用 Swift 编写的服务器应用程序使用。

4

1 回答 1

0

dateparser python 库看起来是满足我需求的最佳解决方案

  • 支持几乎所有现有的日期格式:绝对日期、相对日期(“两周前”或“明天”)、时间戳等。
  • 支持超过 200 种语言环境。
  • 语言自动检测。
  • 通过设置可定制的行为。
  • 支持非公历系统。
  • 支持带有时区缩写或 UTC 偏移量的日期(“美国东部标准时间 2015 年 8 月 14 日”、“2013 年 7 月 21 日 10:15 pm +0500”...)在较长的文本中搜索日期。

为了长期稳定,生产部署始终需要考虑:

  • 积极支持
  • 超过 7.4k 用户
  • 90 多名贡献者
于 2021-08-22T22:48:21.877 回答