Python:从html页面中解析出版日期

Luc*_*ang 1 python regex

对于html页面和特别是与新闻相关的页面,如果有一种解析出版日期的机制,那将非常有用并且非常有用.

不幸的是,互联网上的日期没有一套正则表达式/模式.CNN可以像MONTH DD,YYYY和HuffingtonPost一样发布它可以发布为MM/DD/YY,等等.

有没有人有任何策略比纯粹的正则表达式解析更好,从html页面中提取出版日期?

谢谢.

Leo*_*kov 5

尝试从dateutil解析函数.

它使用一些启发式方法来检测日期格式.它自动工作:)

>>> from dateutil.parser import parse

>>> parse('April 12, 2013')
datetime.datetime(2013, 4, 12, 0, 0)

>>> parse('04/12/13')
datetime.datetime(2013, 4, 12, 0, 0)
Run Code Online (Sandbox Code Playgroud)

还有一个对蟒蛇好一点的日期/时间库-  .它也使用内部的dateutil,但它也有助于与时区正常工作.

>>> import times

>>> times.to_universal('2012-02-03 11:59:03', 'Europe/Amsterdam')
datetime.datetime(2012, 2, 3, 10, 59, 3)

>>> times.to_local(_, 'Europe/Amsterdam')
datetime.datetime(2012, 2, 3, 11, 59, 3, tzinfo=<DstTzInfo 'Europe/Amsterdam' CET+1:00:00 STD>)
Run Code Online (Sandbox Code Playgroud)

但是,对于只是检测日期格式,我认为正则表达式是一个很好的解决方案.

在实际项目中,我将执行以下步骤:

  1. 尝试通过一组正则表达式(已知日期格式)检查日期.
  2. 如果它是已知格式 - 使用带有预定义模式的stdlib strptime.
  3. 如果它是未知格式 - 使用来自dateutil的慢速解析并写入一些警告来记录.