前言
书写一个函数爬取整个数据库的文件,主要是通过每周的定时爬取
为了凸显每周定时爬取,需要获取上周的时间节点
之前写过类似的时间格式函数:Python关于strftime函数详细解析 附实战代码
主要的包为:import datetime
1. 基本函数
对于datetime获取这些功能函数,需要了解一些基本函数
函数 | 描述 |
---|---|
datetime.datetime.today() | 当前时间 |
datetime.datetime.now() | 当前时间 |
datetime.datetime.today().weekday() | 获取当前的星期几 |
对应的赋值关系,也会用到下方,注意甄别:
# 当前时间
today = datetime.datetime.today()
now = datetime.datetime.now()
# 当前星期几
weekday = datetime.datetime.today().weekday()
截图如下:
2. 函数运用
对于以下的时间节点,已将公共部分抽离出来(对应的赋值关系在上方)
获取昨天时间:now() - datetime.timedelta(days=1)
2.1 本周
获取本周的天数,对应获取其他天数,修改对应数字即可
- 本周第一天:
datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday())
- 本周最后一天:
datetime.datetime.now() + datetime.timedelta(days = 6 - datetime.datetime.now().weekday())
利用上方的赋值关系,其值为:
# 本周第一天
now - datetime.timedelta(days = weekday)
# 本周最后一天
now + datetime.timedelta(days = 6 - weekday)
截图如下:
2.2 上周
- 上周第一天:
datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday() + 7)
- 上周最后一天:
datetime.datetime.now() - datetime.timedelta(days = datetime.datetime.now().weekday() + 1)
利用上方的赋值关系,其值为:
# 上周第一天
now - datetime.timedelta(days = weekday + 7)
# 上周最后一天
now - datetime.timedelta(days = weekday + 1)
截图如下:
2.3 本月
当前月的时间输出默认是年月日时分,所以第一天后面跟着1,对应当前月的第一天0点0分
- 当前月的第一天:
datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 1)
- 当前月的最后一天:
datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month + 1, 1) - datetime.timedelta(days=1)
利用上方的赋值关系,其值为:
# 本月第一天
datetime.datetime(now.year, now.month, 1)
# 本月最后一天
datetime.datetime(now.year, now.month + 1, 1) - datetime.timedelta(days=1)
截图如下:
2.4 上月
上月的时间节点,可参考当前月份的时间节点思路:
- 上月的最后一天:
datetime.datetime(datetime.datetime.now().year, datetime.datetime.now().month, 1) - datetime.timedelta(days=1)
上个月的第一天比较复杂(按照刚刚那种写法,显得比较臃肿冗余)
对此拆分下代码
利用上方的赋值关系,其值为:
# 上个月最后一天
datetime.datetime(now.year, now.month, 1) - datetime.timedelta(days=1)
# 上个月第一天
datetime.datetime(lastmonth_end.year, lastmonth_end.month, 1)
截图如下:
2.5 今年
利用上方的赋值关系,其值为:
# 今年第一天
datetime.datetime(now.year, 1, 1)
# 今年最后一天
end = datetime.datetime(now.year + 1, 1, 1) - datetime.timedelta(days=1)
截图如下:
2.6 去年
利用上方赋值关系,其值为:
# 去年最后一天
last_year_end = datetime.datetime(now.year, 1, 1) - datetime.timedelta(days=1)
# 去年第一天
last_year_start = datetime.datetime(last_year_end.year, 1, 1)
截图如下: