如何使用Tweepy获取多个指定用户含特定关键词的推文
Tweepy 整合指定账号筛选+关键词检索的实现方法
核心实现逻辑
Twitter 搜索API原生支持在搜索查询语句中直接限定推文发布者,不需要拆分调用接口、也不需要拉取全量数据后本地过滤。你之前添加#id="Apple"参数无效,是因为完全不符合Twitter的搜索语法规则。
搜索语法规则
直接在原有搜索关键词的基础上,拼接用户筛选条件即可,相关语法如下:
- 限定单个发布账号:使用
from:账号名格式,账号名填写@后面的唯一标识,比如苹果官方账号是@Apple,对应筛选条件写from:Apple - 同时限定多个发布账号:用
OR连接多个from条件,整体用括号包裹,比如要同时匹配苹果、微软、奈飞的账号,就写(from:Apple OR from:Microsoft OR from:Netflix) - 所有条件拼接在同一个
search_query字符串里,服务端会直接返回同时满足账号、关键词、时间范围要求的结果,不需要修改Cursor的其他传参。
修改后的完整代码
import tweepy as tw import pandas as pd # 替换为你自己的Twitter API凭证 my_api_key = "YOUR_API_KEY" my_api_secret = "YOUR_API_SECRET" # 鉴权 auth = tw.OAuthHandler(my_api_key, my_api_secret) api = tw.API(auth, wait_on_rate_limit=True) # 拼接搜索条件:指定账号+指定关键词+过滤转发 search_query = "(from:Apple OR from:Microsoft OR from:Netflix) (#blm OR blm) -filter:retweets" # 调用接口拉取推文 tweets = tw.Cursor(api.search, q=search_query, lang="en", since="2020-05-24", until="2020-12-01", exclude_replies=False, tweet_mode='extended').items() # 存储结果 tweets_copy = [] for tweet in tweets: tweets_copy.append(tweet) print("Total Tweets fetched:", len(tweets_copy))
补充说明
- 你当前使用的是Twitter v1.1的免费标准搜索接口,默认只能回溯最近7天的推文,无法拉取2020年的历史数据,如果需要抓取更早的内容,需要申请付费的全量归档搜索权限。
- 不推荐用
api.user_timeline拉取指定用户全量推文后再本地过滤关键词的方案,这种方式会拉取大量无关内容,很容易触发接口速率限制,效率远低于服务端直接过滤的搜索方案。 - 注意区分账号的唯一ID和显示昵称,比如账号显示名可能是“Apple Official”,但唯一ID是
Apple,筛选条件里必须填唯一ID才能匹配到正确结果。
内容的提问来源于stack exchange,提问作者Alicia_2024
相关产品推荐
相关产品推荐

