You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:06:04