使用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
相关产品推荐
相关产品推荐

