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

使用Tweepy采集指定用户旧推文:Navalny特定时段推文求助

使用Tweepy采集Navalny指定时间段的推文

我看到你已经明确了要采集的推文时间范围(2017年11月1日至2018年1月31日),还拿到了首尾推文的ID,这是个很棒的开始!下面帮你把代码补全并优化,确保能顺利获取目标推文:

完整代码示例

import tweepy

# 填入你的Twitter API密钥信息
consumer_key = '你的consumer_key'
consumer_secret = '你的consumer_secret'
access_token = '你的access_token'
access_token_secret = '你的access_token_secret'

# 完成API认证流程
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)

# 初始化API对象,开启自动速率限制等待,提升采集稳定性
api = tweepy.API(auth, wait_on_rate_limit=True, wait_on_rate_limit_notify=True)

# 你已获取的首尾推文ID
since_id = 933000445307518976  # 对应2017年11月1日左右的首条推文
max_id = 958765432109876543   # 替换为你拿到的2018年1月31日的末条推文ID

# 批量采集推文,处理API分页限制
all_tweets = []
while True:
    # 单次请求最多获取200条推文(API上限)
    tweets = api.user_timeline(
        screen_name='navalny',
        since_id=since_id,
        max_id=max_id - 1,  # 避免重复获取边界推文,因为max_id是包含性参数
        count=200,
        tweet_mode='extended'  # 获取完整推文内容,避免文本截断
    )
    if not tweets:
        break
    all_tweets.extend(tweets)
    # 更新max_id为当前批次最后一条推文的ID,继续往前翻页采集
    max_id = tweets[-1].id

# 处理采集结果示例
print(f"成功采集到 {len(all_tweets)} 条推文")
# 打印前5条推文的发布时间和完整内容
for tweet in all_tweets[:5]:
    print(f"发布时间: {tweet.created_at}")
    print(f"推文内容: {tweet.full_text}\n")

关键细节说明

  • API密钥替换:一定要把代码里的占位符替换成你自己的有效API密钥,否则无法通过认证。
  • 分页逻辑:Twitter API单次最多返回200条推文,所以用循环处理分页,直到没有更多推文返回为止。
  • max_id处理:因为max_id会包含指定ID的推文,所以请求时用max_id - 1,避免重复采集边界的那条推文。
  • 完整推文获取:加上tweet_mode='extended'参数,能获取未截断的完整推文文本,默认情况下Tweepy只会返回截断后的内容。
  • 速率限制处理:初始化API时开启wait_on_rate_limit=True,会自动在达到API调用上限时等待,无需手动处理重试逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:24:12