网站首页 > 技术文章 正文
问题背景
在《Python数据分析第二练:如何用爬虫一次爬取多个页面》给出的例子中,我们对于新闻的日期是通过下面的方式获取得到的。
page_date = '<span class="c-color.*?aria-label="发布于:(.*?)"'
date = re.findall(page_date, web, re.S)
对照下网页源代码就会发现,这个日期的格式不是“2022-05-01”的格式,而是“X天前”、“XX时XX分”等进行了转译的内容,可能这么做的原因是想让我们更加懂得“自己动手、丰衣足食”吧~~~
那么,我们怎么搞一哈子才能把日期转换成标准的日期格式呢?以下enjoy~~~
Python datetime库
Dateime库提供了提供用于操作日期和时间的函数类,可通过help(datetime)查看相信信息,有需要的伙伴还是请自行查阅(切记:自己动手、丰衣足食呦)。
import datetime
help(datetime)
其它相关的库还包括:
我们在本文中暂时只对使用到的部分进行简单介绍,详细内容可以根据自己的需求随时深挖。
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])
一起练习吧
最后,又到了激动人心的一起思考一起练环节,伙伴们,动动脑、动动手,“咯滴咯滴,咯滴咯滴,咯滴咯滴,啊哩斯呔哩”~~~
欢迎交流和讨论。
- 上一篇: SSM整合_年轻人的第一个增删改查
- 下一篇: 高性能轻量级零依赖的轮播图组件——Glider.js
猜你喜欢
- 2024-11-24 无障碍优化之如何制作Google Chrome插件
- 2024-11-24 2021年的一点工作总结(二)富文本编辑器
- 2024-11-24 「asp.net core 系列」5 布局页和静态资源
- 2024-11-24 16.python学习笔记-页面样式
- 2024-11-24 Vue的干货分享-Vue3中的弹窗(模态框)的使用
- 2024-11-24 如何衡量一个人的 JavaScript 水平?
- 2024-11-24 高性能轻量级零依赖的轮播图组件——Glider.js
- 2024-11-24 SSM整合_年轻人的第一个增删改查
- 2024-11-24 DevTools小技巧-让你不止会console.log()
- 2024-11-24 评价打分组件,SVG 半颗星的解决方案
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-