如何修改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
相关产品推荐
相关产品推荐

