在用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. UI自动化框架搭建之Python3

    UI自动化框架搭建--unittest 使用的代码是Python3版本,与时俱进哈哈 解释一下我的框架目录接口(每个人框架的目录接口不一样,根据实际要求) common目录:公共模块,这个地方可以存放 ...

  2. React报错之React Hook 'useEffect' is called in function

    正文从这开始~ 总览 为了解决错误"React Hook 'useEffect' is called in function that is neither a React function ...

  3. ak日记 831 dxm

    import sys from math import inf line = sys.stdin.readline().strip() vs = list(map(int, line.split()) ...

  4. KingbaseFlySync ddl变更流程

    关键字: KingbaseFlySync.Linux.x86_64.mips64el.aarch64.Java 一.ddl变更流程 1. 停掉客户业务,保证没有新数据产生 确认Oracle数据库上所有 ...

  5. 02-MyBatisPlus入门

    快速开始参考:https://baomidou.com/pages/226c21/ 测试项目: mybatis_plus 数据库:mybatis_plus 一.创建并初始化数据库 1.创建数据库: m ...

  6. void指针;函数指针

    void 类型指针 void => 空类型 void* => 空类型指针,只存储地址的值,丢失类型,无法访问,要访问其值,我们必须对这个指针做出正确的 类型转换,然后再间接引用指针.voi ...

  7. docker还原挂载在宿主机的mysql数据

    ps:有个项目的数据库之前是docker的mysql镜像,数据都去mysql的镜像里面拿数据,但是目前镜像里面的数据库是空的,所以现在来说明一下如何恢复数据 1.创建数据卷 docker volume ...

  8. echarts pie饼状图绑定点击事件

    var valueData = [ {value: 33,name: '诊所'}, {value: 29,name: '汽车服务相关'}, {value: 27, name: '洗衣店'}, {val ...

  9. Java程序设计(五)作业

    题目1:Lisa正在编写一个能够计算三科--数学.英语.程序设计基础--平均成绩(平均成绩=三科总成绩/3)和智育成绩(智育成绩=三科总成绩*0.7)的程序.由于两个成绩的获得都要先计算总成绩,因此她 ...

  10. CSS基础-关于CSS注释的添加

    在 CSS 中增加注释很简单,所有被放在/*和*/分隔符之间的文本信息都被称为注释. CSS 只有一种注释,不管是多行注释还是单行注释,都必须以/*开始.以*/结束,中间加入注释内容. 1.注释放在样 ...