简介【Python处理刚刚,分钟,小时,天前等时间】用爬虫获取目标网站数据后可能会遇见时间为处理刚刚,分钟,小时,天前等时间格式,如图
文章插图
解决问题:写了一个工具类来处理该问题 , 其中封装了两个函数
1. 将时间中的中文数字转换成阿拉伯数字
def exchange_num(date):'''将输入字符串中的中文数字转换成阿拉伯数字'''zh_num = '零一二三四五六七八九'for num in range(len(zh_num)):date = date.replace(zh_num[num], str(num))return date
2.将时间按照刚刚 , 分钟,小时,天前等时间格式进行判定跟转换对应时间def deal_time(zh_time):'''对时间进行分类处理 , 对不同情况进行判断'''zh_time = exchange_num(zh_time.strip())time_list = ["小时前","分钟前","刚刚","天前"]now_time = datetime.strftime(datetime.today(), '%Y-%m-%d')time_key_dict = {}[time_key_dict.update({key: operator.contains(zh_time, key)}) for key in time_list]if time_key_dict['刚刚'] or time_key_dict['分钟前']:return now_timeelif time_key_dict['小时前']:now_hour = datetime.strftime(datetime.today(), "%H")pattern = re.search(r"(\d+)", zh_time)if pattern.group(1) <= now_hour:# 小于24小时转换成当日时间return now_timeelse:return datetime.strftime(datetime.today() + timedelta(days=-1), '%Y-%m-%d')# 获取前1天日期elif time_key_dict['天前']:try:pattern = re.search(r"(\d+)", zh_time)zh_time = datetime.strftime(datetime.today() + timedelta(days=(int(pattern.group(1))) * -1),'%Y-%m-%d')return zh_timeexcept Exception:return f"转换失败 当前时间{now_time},网站中的时间{zh_time}"else:return zh_time
完整代码如下import operatorfrom datetime import datetime, timedeltaimport reclass DealTime:'''处理刚刚 , 分钟,小时,天前等时间'''def exchange_num(self, date):'''将输入字符串中的中文数字转换成阿拉伯数字'''zh_num = '零一二三四五六七八九'for num in range(len(zh_num)):date = date.replace(zh_num[num], str(num))return datedef deal_time(self, zh_time):'''对时间进行分类处理,对不同情况进行判断'''zh_time = self.exchange_num(zh_time.strip())time_list = ["小时前","分钟前","刚刚","天前"]now_time = datetime.strftime(datetime.today(), '%Y-%m-%d')time_key_dict = {}[time_key_dict.update({key: operator.contains(zh_time, key)}) for key in time_list]if time_key_dict['刚刚'] or time_key_dict['分钟前']:return now_timeelif time_key_dict['小时前']:now_hour = datetime.strftime(datetime.today(), "%H")pattern = re.search(r"(\d+)", zh_time)if pattern.group(1) <= now_hour:# 小于24小时转换成当日时间return now_timeelse:return datetime.strftime(datetime.today() + timedelta(days=-1), '%Y-%m-%d')# 获取前1天日期elif time_key_dict['天前']:try:pattern = re.search(r"(\d+)", zh_time)zh_time = datetime.strftime(datetime.today() + timedelta(days=(int(pattern.group(1))) * -1), '%Y-%m-%d')return zh_timeexcept Exception:return f"转换失败 当前时间{now_time},网站中的时间{zh_time}"else:return zh_timeif __name__ == '__main__':print(DealTime().deal_time("刚刚"))print(DealTime().deal_time("一天前"))print(DealTime().deal_time("1天前"))print(DealTime().deal_time("5分钟前"))
推荐阅读
- python渗透测试入门——取代netcat
- 天玑820安兔兔跑分最新排行_天玑820处理器怎么样
- 六 Selenium4+Python3系列 - Selenium的三种等待,强制等待、隐式等待、显式等待
- 20 基于SqlSugar的开发框架循序渐进介绍-- 在基于UniApp+Vue的移动端实现多条件查询的处理
- 五 Selenium4+Python3系列 - 多窗口处理之句柄切换
- Python3.11正式版,它来了!
- python3使用libpcap库进行抓包及数据处理
- Python 多重继承时metaclass conflict问题解决与原理探究
- 牛客 python试题解析1 - 入门级
- Python数据分析:实用向