问题背景
在《Python数据分析第二练:如何用爬虫一次爬取多个页面》给出的例子中,我们对于新闻的日期是通过下面的方式获取得到的。
page_date = '<span class="c-color.*?aria-label="发布于:(.*?)"'
date = re.findall(page_date, web, re.S)
对照下网页源代码就会发现,这个日期的格式不是“2022-05-01”的格式,而是“X天前”、“XX时XX分”等进行了转译的内容,可能这么做的原因是想让我们更加懂得“自己动手、丰衣足食”吧~~~
百度资讯的日期表述形式
那么,我们怎么搞一哈子才能把日期转换成标准的日期格式呢?以下enjoy~~~
LOGO
Python datetime库
Dateime库提供了提供用于操作日期和时间的函数类,可通过help(datetime)查看相信信息,有需要的伙伴还是请自行查阅(切记:自己动手、丰衣足食呦)。
import datetime
help(datetime)
其它相关的库还包括:
时间日期相关的python库
我们在本文中暂时只对使用到的部分进行简单介绍,详细内容可以根据自己的需求随时深挖。
from datetime import datetime # 注意前后两个datetime的含义不同,前者是模块,后者是函数类
now = datetime.now()
print(now)
print(now.strftime('%a, %b %d %H:%M'))
日期打印
其中,Python中时间日期格式化符号用法如下:
- %Y 四位数的年份表示(000-9999)
- %y 两位数的年份表示(00-99)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00-59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
在我们的案例中,由于日期信息获取的为“X天前”等形式,这就还需要进行日期之间的间隔计算,这需要使用到datetime中的timedelta类。
from datetime import datetime, timedelta
now = datetime.now()
print(now)
cur_time1 = now + timedelta(hours=10)
print(cur_time1)
cur_time2 = now - timedelta(days=1)
print(cur_time2)
cur_time3 = now + timedelta(days=2, hours=12)
print(cur_time3)
日期计算
上面的两个内容是我们在案例学习中主要涉及到的,其它的部分就不做过多赘述。
案例代码
对应到我们的第二讲案例,需要把date转换成标准的日期,具体的代码如下:
page_date = '<span class="c-color.*?aria-label="发布于:(.*?)"'
date = re.findall(page_date, page, re.S)
print(date)
if ('天前' in date[0]):
date[0] = (now - timedelta(days=int(date[0][0]))).strftime('%Y-%m-%d %H:%M')
else:
date[0]
print(date[0])
代码输出结果
一起练习吧
最后,又到了激动人心的一起思考一起练环节,伙伴们,动动脑、动动手,“咯滴咯滴,咯滴咯滴,咯滴咯滴,啊哩斯呔哩”~~~
欢迎交流和讨论。
我要学习!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。