Python 如何进行实时推特分类
我正在尝试做实时推特分类。为此,我使用tweepy流媒体类。我想Python 如何进行实时推特分类,python,twitter,classification,tweepy,Python,Twitter,Classification,Tweepy,我正在尝试做实时推特分类。为此,我使用tweepy流媒体类。我想 获取一条推特 将它存储在数据库中,在我的例子中,它是一个文本文件 阅读文本文件并 对tweet进行分类 问题是我的系统一直在获取推文并保存它。它不会移动到下一步。 我该怎么办 流式代码 import tweepy class MyStreamListener(tweepy.StreamListener): def on_status(self, status): if not status.text.
- 获取一条推特
- 将它存储在数据库中,在我的例子中,它是一个文本文件
- 阅读文本文件并
- 对tweet进行分类
import tweepy
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
if not status.text.startswith('RT'):
if 'https://t.co' not in status.text:
text=status.text
with open("Output.txt", "w",encoding='utf-8') as text_file:
text_file.write(text)
# Initializing the tokens
def run_stream():
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth,wait_on_rate_limit=True)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener,tweet_mode= 'extended')
myStream.filter(track=['corona'],languages=["en"],encoding='utf-8')
分类
def classify():
f = open("Output.txt", "r",encoding="utf-8")
return f.read(),clf.predict_proba(feat.transform([f.read()]))
run_stream()
classify()
运行该功能
def classify():
f = open("Output.txt", "r",encoding="utf-8")
return f.read(),clf.predict_proba(feat.transform([f.read()]))
run_stream()
classify()
我面临的问题是,系统继续运行第一个功能,而不移动到下一个分类功能 来自:
除非连接关闭,否则流不会终止,从而阻塞
线Tweepy在过滤器上提供了一个方便的is_异步参数,因此
流将在新线程上运行。比如说
myStream.filter(track=['python'], is_async=True)
如果您这样做,我怀疑您需要小心地管理对Output.txt的读写访问,否则您可能会在文件包含部分写入时读取该文件。使用专门构建的线程安全排队机制可能更好,比如。因此,有另一种方法可以返回tweet of out tweepy,而不将其存储在文本文件或数据库中文本文件可能是最容易理解的,但要使线程安全就不那么容易了。假设数据库可以同时处理生产者和消费者,那么它可能工作得很好。