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

如何使用Tweepy在指定时间区间内获取指定用户的推文?

解决Tweepy获取@IBM指定时间段推文的问题

嘿,我来帮你搞定这个需求~你的代码思路是对的,但有几个细节需要调整才能正确运行,我来一步步给你修正和解释:

原代码的问题点

  • 缺少datetime模块的导入,代码里用到了datetime.datetime但没声明导入;
  • Tweepy的user_timeline接口的since和until参数只接受字符串格式的日期(比如"2018-01-19"),而且只能按日期过滤,没法直接精确到小时级别;
  • 循环语句没有写完,缺少具体的处理逻辑;
  • 没有处理时区问题,Twitter返回的推文时间是UTC时区,直接用本地时间比较会出错。

修正后的完整代码

import tweepy
from datetime import datetime, timezone

# 替换成你的Twitter开发者API密钥
consumer_key = "..."
consumer_secret = "..."
access_token = "..."
access_token_secret = "..."

# 完成API认证
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
# 加上wait_on_rate_limit=True,自动处理API限流问题
api = tweepy.API(auth, wait_on_rate_limit=True)

# 定义目标时间范围(注意:这里用UTC时区,和Twitter返回的时间保持一致)
# 如果你的需求是本地时间,需要先转换为UTC,比如北京时间要减8小时
start_date = datetime(2018, 1, 19, 12, 0, 0, tzinfo=timezone.utc)
end_date = datetime(2018, 1, 19, 13, 0, 0, tzinfo=timezone.utc)

# 存储符合条件的推文
filtered_tweets = []

# 遍历IBM的用户时间线,过滤指定时间段的推文
for tweet in tweepy.Cursor(api.user_timeline, screen_name="IBM", tweet_mode="extended").items():
    # 将推文的创建时间转换为带UTC时区的datetime对象
    tweet_created_at = tweet.created_at.replace(tzinfo=timezone.utc)
    # 检查是否在目标时间范围内
    if start_date <= tweet_created_at < end_date:
        filtered_tweets.append(tweet)
        # 打印推文信息,方便验证
        print(f"发布时间 (UTC): {tweet_created_at}")
        print(f"推文内容: {tweet.full_text}\n")

# 输出结果统计
print(f"共找到 {len(filtered_tweets)} 条符合2018年1月19日12:00-13:00 UTC条件的推文")

关键细节说明

  1. 时区处理:Twitter所有推文的created_at字段都是UTC时间,所以我们定义的时间范围必须也用UTC,避免时间偏差。如果你的需求是本地时间,记得先转换为UTC(比如北京时间转UTC需要减去8小时)。
  2. 完整推文内容:加上tweet_mode="extended"参数,避免长推文被截断,这样能获取到完整的推文文本。
  3. 限流处理:wait_on_rate_limit=True会让Tweepy在API请求达到限制时自动等待,不用手动处理限流问题。
  4. 时间过滤逻辑:因为Twitter API不支持精确到小时的时间范围查询,所以我们先获取@IBM的推文,再在本地通过created_at字段过滤出目标时间段的内容。

额外注意事项

  • Twitter的标准API最多只能获取用户最近3200条推文,如果@IBM在2018年1月19日的推文超过这个范围(可能性很低),可能无法获取到全部内容;如果需要更完整的历史数据,需要申请Twitter学术研究API。
  • 确保你的开发者账号有足够的权限,免费账号可以正常使用user_timeline接口,但有请求次数限制。

内容的提问来源于stack exchange,提问作者Alessandro Russo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:18:19