如何让Tweepy stream.filter仅返回指定用户发布的带指定hashtag的推文
问题根因
Twitter 官方流式过滤接口的多参数是或逻辑,同时传入follow和track参数时,只要满足任一条件的推文都会被返回,而非同时满足两个条件,这就是你当前拿到所有带目标hashtag推文的原因。
修复方案
需要走「API侧粗过滤+本地细校验」的两层逻辑实现你的需求:
- 第一步:调用流接口时仅传入
follow参数,先限定只拉取目标用户发布的所有推文,减少无效流量消耗 - 第二步:在本地的流回调逻辑中,对拿到的推文实体做hashtag校验,仅保留包含目标hashtag的内容
代码示例如下(以tweepy库为例):
# 第一步:流过滤仅保留指定用户的所有推文 stream.filter(follow=[twitter_id], threaded=True) # 第二步:在你的流回调方法中补充hashtag校验逻辑 def on_tweet(self, tweet): # 提取推文中的所有hashtag,统一转小写适配大小写不敏感的匹配规则 existing_hashtags = [tag["tag"].lower() for tag in tweet.entities.get("hashtags", [])] # 校验是否包含目标hashtag,注意hashtag_to_track不要带#前缀 if hashtag_to_track.lower() in existing_hashtags: # 此处编写你对符合要求推文的后续处理逻辑 print(f"命中符合要求的推文:{tweet.text}")
内容的提问来源于stack exchange,提问作者0xSingularity
相关产品推荐
相关产品推荐

