Python生成间隔3小时的datetime日期列表用于Google Trends爬虫
现有代码问题排查
你的代码有以下几个核心问题导致无法正常运行:
- 每次进入循环都重新初始化
date_list,之前添加的内容会被全部清空 - 循环终止条件中直接把
datetime类型的start_date和字符串类型的end做比较,类型不匹配会触发报错 - 循环内没有更新
start_date的取值,程序会进入死循环 - 没有按照需求生成「起始日期-结束日期」的配对数据,仅存储了偏移3小时的时间值,不符合爬虫调用要求
修复后可运行代码
from datetime import datetime, timedelta # 配置参数 start = '2018-06-05T01' end = '2020-11-01T23' start_date = datetime.strptime(start, '%Y-%m-%dT%H') end_date = datetime.strptime(end, '%Y-%m-%dT%H') # 时间偏移配置:起始日期间隔3小时,结束日期比当前起始多4小时 interval_start = timedelta(hours=3) offset_end = timedelta(hours=4) date_pairs = [] current_start = start_date while current_start <= end_date: # 计算当前时间段的结束时间 current_end = current_start + offset_end # 存储配对,如果你需要转成Google Trends要求的字符串格式可以在这里处理 date_pairs.append( (current_start, current_end) ) # 更新下一个起始时间 current_start += interval_start # 验证输出:打印前5组时间对 for pair in date_pairs[:5]: print(f"起始:{pair[0].strftime('%Y-%m-%dT%H')},结束:{pair[1].strftime('%Y-%m-%dT%H')}")
逻辑说明
- 所有时间运算都使用
datetime类型,避免类型不匹配错误 - 每次生成的结束时间比当前起始时间多4小时,下一个起始时间比当前起始多3小时,自动实现1小时的重叠要求
- 循环终止条件判断当前起始时间是否超过设定的最终结束时间,达标后自动停止
- 最终生成的
date_pairs列表里存储了所有符合要求的时间配对,你可以根据Google Trends接口的要求转成对应格式的字符串直接调用
内容的提问来源于stack exchange,提问作者Ivan Raykov
相关产品推荐
相关产品推荐

