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

如何使用Tweepy无搜索关键词提取列表用户指定日期范围内的推文

报错原因

你使用的是4.0及以上版本的Tweepy,api.user_timeline接口早已移除since、until两个参数,这两个参数原本属于旧版搜索接口,不支持时间线拉取场景,因此会抛出非预期参数的提示。

实现自有列表用户指定时间范围推文的步骤
  • 先调用列表成员接口拉取你自有列表下的所有账号
  • 逐个拉取账号的时间线推文(标准API最多支持拉取单个用户最近3200条公开推文)
  • 本地过滤推文的发布时间,筛选2016-2021年的结果即可
修正后的完整代码
# 导入依赖库
import tweepy
import pandas as pd
import datetime

# 身份验证(替换成你自己的密钥)
consumer_key = "你的consumer_key"
consumer_secret = "你的consumer_secret"
access_token = "你的access_token"
access_token_secret = "你的access_token_secret"

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)

# 定义你要筛选的时间范围,对齐UTC时区避免过滤误差
start_date = datetime.datetime(2016, 1, 1, tzinfo=datetime.timezone.utc)
end_date = datetime.datetime(2021, 12, 31, 23, 59, 59, tzinfo=datetime.timezone.utc)

# 替换成你的自有列表ID,也可以用owner_screen_name+slug参数指定列表
list_id = "你的自有列表ID"
# 拉取列表所有成员
list_members = api.list_members(list_id=list_id)

all_tweets = []
# 遍历每个列表成员拉取推文
for user in list_members:
    # 拉取用户最多3200条历史推文
    for tweet in tweepy.Cursor(api.user_timeline, screen_name=user.screen_name, tweet_mode="extended").items(3200):
        # 过滤时间符合要求的推文
        if start_date <= tweet.created_at <= end_date:
            all_tweets.append([tweet.full_text, tweet.created_at, user.screen_name])

# 转成DataFrame
tweets_df = pd.DataFrame(all_tweets, columns=['Tweet Text', 'Tweet Datetime', 'username'])
注意事项
  • 标准开发者API的user_timeline接口最多仅支持拉取单个用户最近3200条公开推文,如果目标用户在2016-2021年的发推量超过3200条,更早的推文无法通过标准接口获取,需要申请学术研究API权限。
  • 代码中tweet_mode="extended"参数用于拉取完整的推文内容,避免长文本被截断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 14:24:01