为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用Tweepy按主题标签流式传输推文,并使用Tweepy进行计数过滤器?

如何使用Tweepy按主题标签流式传输推文,并使用Tweepy进行计数过滤器?

www说 2022-08-11 18:15:51
因此,我想做的是从Twitters API直播推文:仅用于主题标签“Brexit”,仅限英语,以及特定数量的推文(1k - 2k)。到目前为止,我的代码将实时流式传输推文,但无论我以何种方式修改它,我要么最终忽略计数并无限期地流式传输,要么我得到错误。如果我将其更改为仅流式传输特定用户的推文,则计数函数有效,但它会忽略主题标签。如果我为给定的主题标签流式传输所有内容,它将完全忽略计数。我在尝试修复它方面已经相当不错,但我缺乏经验,并且真的用它撞上了砖墙。如果我能得到一些帮助,如何同时勾选所有这些框,将不胜感激!到目前为止,下面的代码将无限期地流式传输“英国脱欧”推文,因此忽略计数= 10由于我玩它,代码的底部有点混乱,抱歉:import numpy as npimport pandas as pdimport tweepyfrom tweepy import APIfrom tweepy import Cursorfrom tweepy.streaming import StreamListenerfrom tweepy import OAuthHandlerfrom tweepy import Streamimport Twitter_Credentialsimport matplotlib.pyplot as plt# Twitter client - hash out to stream allclass TwitterClient:    def __init__(self, twitter_user=None):        self.auth = TwitterAuthenticator().authenticate_twitter_app()        self.twitter_client = API(self.auth)        self.twitter_user = twitter_user    def get_twitter_client_api(self):        return self.twitter_client# Twitter authenticatorclass TwitterAuthenticator:    def authenticate_twitter_app(self):        auth = OAuthHandler(Twitter_Credentials.consumer_key, Twitter_Credentials.consumer_secret)        auth.set_access_token(Twitter_Credentials.access_token, Twitter_Credentials.access_secret)        return authclass TwitterStreamer():    # Class for streaming and processing live Tweets    def __init__(self):        self.twitter_authenticator = TwitterAuthenticator()    def stream_tweets(self, fetched_tweets_filename, hash_tag_list):        # this handles Twitter authentication and connection to Twitter API        listener = TwitterListener(fetched_tweets_filename)        auth = self.twitter_authenticator.authenticate_twitter_app()        stream = Stream(auth, listener)        # This line filters Twitter stream to capture data by keywords        stream.filter(track=hash_tag_list)
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

你尝试使用两种不同的方法来访问 Twitter API - 流式传输是实时的,搜索是一次性的 API 调用。

由于流媒体是连续和实时的,因此无法对其应用结果计数 - 代码只是打开一个连接,说“嘿,从现在开始向我发送所有包含”的推文,并坐下来听。此时,你将放入 ,对于收到的每条推文,你都可以将它们写入一个文件。hash_tag_listStreamListener

你可以在此处应用计数器,但需要将其包装在处理程序中,并增加收到的每条推文的计数器。当你到达1000条推文时,停止收听。StreamListeneron_data

对于搜索选项,您有几个问题...第一个是你自2019年以来一直在要求推文,但标准搜索API只能回到7天。你显然只要求10条推文。但是,你编写该方法的方式是,对于 API 返回的 10 个集合中的每个推文,你然后创建一个实时流连接,并开始侦听和写入文件。所以这是行不通的。

你需要选择一个 - 要么搜索1000条推文并将它们写入文件(从未设置),要么收听1000条推文并将它们写入文件(删除并直接跳转到主播)。TwitterStreamer()for Tweet in Cursor(api.search...


查看完整回答
反对 回复 2022-08-11
?
长风秋雁

TA贡献1757条经验 获得超7个赞

只需将 # 标签符号添加到列表中的搜索短语,它就会匹配使用特定主题标签的推文。它区分大小写,因此您可能希望向搜索数组添加尽可能多的选项。仅使用“Brexit”匹配可能使用或可能不使用主题标签但包含关键字“Brexit”的推文。

hash_tag_list = [“#Brexit”]


查看完整回答
反对 回复 2022-08-11
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信