Python 从 tweepy 返回流数据
Python returning streaming data from tweepy
我正在构建一个模块 source_collect.py,它将包含我将用来从各种来源收集数据的模块,以及 return 我可以使用第二个模块来解析的原始数据。
我可以将流数据打印或写入 json 文件,但我无法通过 return 函数 return 数据。有人对我遗漏的东西有什么建议吗?
import tweepy
import twitter_credentials as cred
class my_streaming_object(tweepy.streaming.StreamListener):
def on_data(self,raw_data):
try:
print('......streaming...')
self.raw_data = raw_data
return self.raw_data
except BaseException as e:
print(f'Code broke :{str(k)}')
return False
def on_error(self,status_code):
if status_code ==420:
print(f'Twitter limit stop{self.status.code}')
return False
class twitter_data:
def stream_tweets_keywords(self, keywords):
# get twitter access
authen = tweepy.auth.OAuthHandler(cred.CONSUMER_KEY,cred.CONSUMER_SECRET)
authen.set_access_token(cred.ACCESS_TOKEN,cred.ACCESS_TOKEN_SECRET)
test = authen.get_username()
print(f'You are Authenticated as Twitter user {test}')
print('....Initialising twitter stream......')
# stream tweets
try:
streamer = my_streaming_object()
my_stream = tweepy.streaming.Stream(authen, listener=streamer)
my_stream.filter(track=keywords, is_async=True)
return
except BaseException as b:
print(b)
return False
if __name__=='__main__':
run = twitter_data()
run.stream_tweets_keywords(['Hydrogen','Nikola'])
通过改变我的逻辑解决了它。
在我在此模块中使用的 DB_store 模块中创建了一个函数来处理对 db 的流式响应。
逻辑上的变化是让这个模块 return 然后在下一个函数输入中拾取它。我在这个函数中嵌套了下一个函数。
我现在不知道这是否是一个好的做法,所以如果任何机构对整体逻辑有一个好的 OOP 指南,我们将不胜感激。
我正在构建一个模块 source_collect.py,它将包含我将用来从各种来源收集数据的模块,以及 return 我可以使用第二个模块来解析的原始数据。
我可以将流数据打印或写入 json 文件,但我无法通过 return 函数 return 数据。有人对我遗漏的东西有什么建议吗?
import tweepy
import twitter_credentials as cred
class my_streaming_object(tweepy.streaming.StreamListener):
def on_data(self,raw_data):
try:
print('......streaming...')
self.raw_data = raw_data
return self.raw_data
except BaseException as e:
print(f'Code broke :{str(k)}')
return False
def on_error(self,status_code):
if status_code ==420:
print(f'Twitter limit stop{self.status.code}')
return False
class twitter_data:
def stream_tweets_keywords(self, keywords):
# get twitter access
authen = tweepy.auth.OAuthHandler(cred.CONSUMER_KEY,cred.CONSUMER_SECRET)
authen.set_access_token(cred.ACCESS_TOKEN,cred.ACCESS_TOKEN_SECRET)
test = authen.get_username()
print(f'You are Authenticated as Twitter user {test}')
print('....Initialising twitter stream......')
# stream tweets
try:
streamer = my_streaming_object()
my_stream = tweepy.streaming.Stream(authen, listener=streamer)
my_stream.filter(track=keywords, is_async=True)
return
except BaseException as b:
print(b)
return False
if __name__=='__main__':
run = twitter_data()
run.stream_tweets_keywords(['Hydrogen','Nikola'])
通过改变我的逻辑解决了它。 在我在此模块中使用的 DB_store 模块中创建了一个函数来处理对 db 的流式响应。
逻辑上的变化是让这个模块 return 然后在下一个函数输入中拾取它。我在这个函数中嵌套了下一个函数。
我现在不知道这是否是一个好的做法,所以如果任何机构对整体逻辑有一个好的 OOP 指南,我们将不胜感激。