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

如何修改Twitter API V2查询以获取指定列表的全部推文?

如何修改Tweepy代码获取指定Twitter列表的Feed内容

要抓取指定Twitter列表的Feed内容,你需要替换原代码中仅针对列表创建者的筛选逻辑,改为针对目标列表ID的筛选:

方案1:修改search_all_tweets的查询语句

原代码的query参数用from:wahl_beobacher限定了仅抓取列表创建者的推文,你需要将其替换为list:912241909002833921(该数字即为你提供的列表链接中的ID)。如果需要保留非转推、德语推文的过滤规则,最终查询语句如下:

query = f'list:912241909002833921 -is:retweet lang:de'

修改后的完整代码:

import tweepy
from twitter_authentication import bearer_token
import time
import pandas as pd

client = tweepy.Client(bearer_token, wait_on_rate_limit=True)

start = time.time()
csu_tweets = []
for response in tweepy.Paginator(client.search_all_tweets, 
                                 query = f'list:912241909002833921 -is:retweet lang:de',
                                 user_fields = ['username', 'public_metrics', 'description', 'location'],
                                 tweet_fields = ['created_at', 'geo', 'public_metrics', 'text'],
                                 expansions = 'author_id',
                                 start_time = '2020-01-01T00:00:00Z',
                                 end_time = '2022-12-06T00:00:00Z'):
    time.sleep(1)
    csu_tweets.append(response)

end = time.time()
print(f"Scraping needed {(end - start)/60} minutes.")
print(len(csu_tweets))

方案2:使用专门的get_list_tweets接口(更推荐)

Twitter API V2提供了get_list_tweets方法,专门用于获取列表Feed内容,相比搜索接口更直接高效,无需通过搜索语法筛选:

import tweepy
from twitter_authentication import bearer_token
import time
import pandas as pd

client = tweepy.Client(bearer_token, wait_on_rate_limit=True)

start = time.time()
csu_tweets = []
# 直接传入列表ID
for response in tweepy.Paginator(client.get_list_tweets, 
                                 list_id=912241909002833921,
                                 exclude=['retweets'],  # 对应原代码的-is:retweet规则
                                 tweet_fields=['created_at', 'geo', 'public_metrics', 'text'],
                                 user_fields=['username', 'public_metrics', 'description', 'location'],
                                 expansions='author_id',
                                 start_time='2020-01-01T00:00:00Z',
                                 end_time='2022-12-06T00:00:00Z'):
    time.sleep(1)
    csu_tweets.append(response)

# 若需保留德语推文过滤,可在此处对结果进行二次筛选
filtered_tweets = [tweet for tweet in csu_tweets if tweet.lang == 'de']

end = time.time()
print(f"Scraping needed {(end - start)/60} minutes.")
print(len(filtered_tweets))

关键说明:

  • list_id直接传入目标列表的ID即可
  • exclude=['retweets']实现了原代码中排除转推的效果
  • get_list_tweets不支持直接按语言过滤,需在获取结果后自行筛选德语推文

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:01:08