在用golang爬虫的时候

总会遇到 10天前 10分钟前 刚刚这种很影响我们爬取正常事件

所以我写了个方法 来格式化这种事件

golang 版本

package utils

import (
"fmt"
"regexp"
"strconv"
"strings"
"time"
) func HoursBeforeDayBeforeFormat(arcTime string) string {
arcTime = strings.TrimSpace(arcTime) timeList := [...]string{
"小时前",
"分钟前",
"刚刚",
} t := time.Now() // 获取当前时间
currentTime := t.Format("2006-01-02 15:04:05") //获取当前格式的日期
for _, _value := range timeList {
isContains := strings.Contains(arcTime, _value)
if isContains {
nowHour := time.Now().Format("15")
pattern := regexp.MustCompile(`\d+`)
afterNumber := pattern.FindString(arcTime)
if afterNumber == "" {
if arcTime == "刚刚" {
return currentTime
} else {
return "请传入带有数字类型 比如:5小时前"
}
} if afterNumber <= nowHour {
return currentTime
} else if strings.Contains(arcTime, "分钟前") {
return currentTime
} else {
beforeDay := t.AddDate(0, 0, -1)
return beforeDay.Format("2006-01-02 15:04:05")
}
}
} if strings.Contains(arcTime, "天前") {
pattern := regexp.MustCompile(`\d+`)
afterNumber, err := strconv.Atoi(fmt.Sprint("-", pattern.FindString(arcTime)))
if err != nil {
return fmt.Sprintln(arcTime, "正则提取错误")
} return fmt.Sprintln(t.AddDate(0, 0, afterNumber).Format("2006-01-02 15:04:05"))
} else {
return arcTime
} }

Python版本

# -*- coding: utf-8 -*-
# @Time : 2022/8/19 11:31
# @Author : lzc
# @Email : hybpjx@163.com
# @File : __init__.py.py
# @Software: PyCharm
import operator
from datetime import datetime, timedelta
import re def number_turn_to(input_data):
regex_list = [
{"name": "一", 'value': 1},
{"name": "二", 'value': 2},
{"name": "三", 'value': 3},
{"name": "四", 'value': 4},
{"name": "五", 'value': 5},
{"name": "六", 'value': 6},
{"name": "七", 'value': 7},
{"name": "八", 'value': 8},
{"name": "九", 'value': 9},
{"name": "十", 'value': 10},
] for i1 in regex_list:
for i2 in i1['name']:
input_data = re.sub(i2, str(i1['value']), input_data)
return input_data def hoursBefore_dayBefore_format(arc_time):
arc_time = number_turn_to(arc_time.strip()) time_list = [
"小时前",
"分钟前",
"刚刚",
]
now_time = datetime.strftime(datetime.today(), '%Y-%m-%d')
for t in time_list:
IsContains = operator.contains(arc_time, t)
if IsContains:
now_hour = datetime.strftime(datetime.today(), "%H")
pattern = re.search(r"(\d+)", arc_time) if not pattern:
if arc_time == "刚刚":
return now_time
else:
return "请传入带有数字类型 小时前"
arc_hour = pattern.group(1) if arc_hour <= now_hour:
# 24小时之前,一律替换成当天日期
return now_time
elif "分钟前" in arc_time:
return now_time
else:
arc_time = datetime.strftime(datetime.today() + timedelta(days=-1), '%Y-%m-%d') # 获取前1天日期
return arc_time
if "天前" in arc_time:
try:
d = [str(d) + '天前' for d in range(1, 15)]
arc_time = datetime.strftime(datetime.today() + timedelta(days=(d.index(arc_time) + 1) * -1),
'%Y-%m-%d')
return arc_time
except Exception:
return f"转换失败 当前时间{now_time},网站中的时间{arc_time}" else:
return arc_time if __name__ == '__main__':
print(hoursBefore_dayBefore_format("一天前"))

Golang 和Python 几个小时前 几分钟 几天前的处理的更多相关文章

  1. python 获取几小时之前,几分钟前,几天前,几个月前,及几年前的具体时间

    引入以下两个包: import datetime import arrow 具体代码 # import datetime # import arrow def getTime(self, flag,d ...

  2. 想涨工资吗?那就学习Scala,Golang或Python吧

    [编者按]据薪水调查机构 PayScale 提供的数据显示,掌握 Scala,Golang 和 Python 语言以及诸如 Apache Spark 之类的大数据技术,能带来最大的薪水提升.本文作者为 ...

  3. DES对称加密算法实现:Java,C#,Golang,Python

    数据加密标准(DES,Data Encryption Standard,简写DES)是一种采用块密码加密的对称密钥算法,加密分组长度为64位,其中8.16.24.32.40.48.56.64 等8位是 ...

  4. 2017年的golang、python、php、c++、c、java、Nodejs性能对比(golang python php c++ java Nodejs Performance)

    2017年的golang.python.php.c++.c.java.Nodejs性能对比 本人在PHP/C++/Go/Py时,突发奇想,想把最近主流的编程语言性能作个简单的比较, 至于怎么比,还是不 ...

  5. 2017年的golang、python、php、c++、c、java、Nodejs性能对比[续]

    2017年的golang.python.php.c++.c.java.Nodejs性能对比[续] 最近忙,这个话题放了几天,今天来个续集.   上篇传送门: 2017年的golang.python.p ...

  6. golang与python多线程的并发速度

    一.golang的代码 package main import ( "fmt" "time" ) func Text_goroute(a int, b int) ...

  7. 使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前

    //使用C#把发表的时间改为几个月,几天前,几小时前,几分钟前,或几秒前 //2008年03月15日 星期六 02:35 public string DateStringFromNow(DateTim ...

  8. golang和python互相调用

    http://blog.yuanzhaoyi.cn/2018/06/27/golang_python.html python3-ctypes: https://docs.python.org/3.5/ ...

  9. Golang调用Python

    https://yq.aliyun.com/articles/117329 Python是时髦的机器学习御用开发语言,Golang是大红大紫的新时代后端开发语言.Python很适合让搞算法的写写模型, ...

随机推荐

  1. rcu使用遇到问题汇总

    1.3.10内核,在项目中遇到一种情况,我们根据sk指针hash到一个cpu上,然后访问该cpu对应分配的一个数据区. 然后系统会偶尔crash掉,crash掉有两种情况,一种是cred的rcu回收时 ...

  2. HTTPS 一定是安全的吗?

    大家好,我是小林. 上周有位读者在面字节时被问道这么一个问题:HTTPS 一定安全可靠吗? 这个问题的场景是这样的:客户端通过浏览器向服务端发起 HTTPS 请求时,被「假基站」转发到了一个「中间人服 ...

  3. shell中系统任务设置

    shell中系统任务设置 1.系统启动流程 启动计算机的硬件(BIOS) 读取时间 选择对应的启动模式(USB HDD EFI) 如果是Linux系统,回去找/boot目录.引导这个系统启动 计算机系 ...

  4. Java-往数据库插入日期

    Java-往数据库中插入日期 将字符串类型的时间转换成mysql的日期格式 String str = "2022-6-11"; SimpleDateFormat sdf = new ...

  5. n【c#】委托:delegate 学习笔记

    类似于c/c++的指针,只不过c#的委托存储的是某个方法的调用,派生子System.Delegate

  6. KingbaseES R6 单节点数据库异机恢复案例

    数据库运行硬件或系统环境如果发生了不可恢复的故障,这时只能采用异机恢复的方式恢复数据库.以下通过例子介绍异机恢复的过程. 一.硬件环境 192.168.237.101 数据库运行源主机 192.168 ...

  7. Java注解系统学习与实战

    背景 为什么要再次梳理一下java注解,显而易见,因为重要啊.也是为研究各大类开源框架做铺垫,只有弄清楚Java注解相关原理,才能看懂大部分框架底层的设计. 缘起 注解也叫做元数据,是JDK1.5版本 ...

  8. Redis变慢?深入浅出Redis性能诊断系列文章(三)

    (本文首发于"数据库架构师"公号,订阅"数据库架构师"公号,一起学习数据库技术,助力职业发展) 本篇为Redis性能问题诊断系列的第三篇,主要从Redis服务层 ...

  9. 【debug】 Linux中top的使用

    在我们日常的开发中,我们经常需要查看每个线程的cpu使用情况.其实,在linux中,top也是我们查看cpu使用状况的一个好帮手 top:先查看每一个进程的使用状况 我们可以发现PID:3800这个经 ...

  10. 在 Kubernetes 容器集群,微服务项目最佳实践

    转载自:https://mp.weixin.qq.com/s/WYu3gDwKKf06f_FYbO9YRg 本文主要介绍我个人在使用 Kubernetes 的过程中,总结出的一套「Kubernetes ...