为 tweepy 流中的每个项目设置推文计数
Set tweets counts for each items in tweepy stream
我有问题,无法找到解决方案..
我已经编写了一个 python 脚本来流式传输 twitter 推文。
我的问题是我需要为给定列表中的每个单词阅读 5 条推文。
代码如下:
class TweetListener(StreamListener):
def on_status(self,status):
print "TWEET ARRIVED!!!"
print "Tweet Text : %s" % status.text
print "Author's name : %s" % status.author.screen_name
print "Time of creation : %s" % status.created_at
print "Source of Tweet : %s" % status.source
time.sleep(10)
return True
def on_error(self, status):
print status
if status == 420:
print "Too soon reconnected, Exiting!!"
return False
sys.exit()
def search_tweets():
twitterStream = Stream(connect().auth, TweetListener())
twitterStream.filter(track=['Cricket','Maths','Army','Sports'],languages = ["en"],async=True)
这里我需要为板球、数学、陆军和运动分别获取 5 条推文
我得到的是针对上述元素的无限数量的推文。
非常感谢任何帮助。
谢谢和问候。
class TweetListener(StreamListener):
def __init__(self, list_=None,dict_= None):
self.keys_= list_
self.dict = dict_
def on_status(self, status):
str_ = status.text.lower()
for key in self.dict.keys():
if key.lower() in str_.lower():
if self.dict[key] <= 0:
return True
else:
self.dict[key] -=1
self.performAction(key,status)
if all(value == 0 for value in self.dict.values()):
return False
def on_error(self, status):
print status
if status == 420:
print "Too soon reconnected . Will terminate the program"
return False
sys.exit()
def create_dict(list_):
no_of_tweets = 5
dict_ = {k:no_of_tweets for k in list_ }
return dict_
def search_tweets():
search_word = ['Cricket','Maths','Army','Sports']
twitterStream = Stream(connect().auth, TweetListener(list_=search_word , dict_=create_dict(search_word)))
twitterStream.filter(track=search_word ,languages = ["en"],async=True)
在这里,我初始化了一个列表,其中包含要搜索推文的所有必需单词,然后我创建了一个字典,其中 key:value 作为 word_to_be_searched:count_as_5 在 create_dict(list_)函数,如Cricket:5、Maths:5、Army:5、Sports:5等。然后我将列表和字典一起传递给 TweetListener class.
我覆盖 on_status 函数来检索推文,然后将推文与我的字典的关键字段进行比较。很明显会有匹配,然后,在这种情况下,我将值(此处作为计数器)减 1。
当所有的值都变成0的时候,那么我returnfalse就打破循环,关闭线程。
[注意,如果某个键对应的任何值变为零,则表示已经捕获了所需的推文,因此我们不会继续处理任何推文那个词。]
然后在 performAction(key, status) 函数中 {key=one of the searched words and status = tweet captured} 我执行我要求的任务。
我有问题,无法找到解决方案.. 我已经编写了一个 python 脚本来流式传输 twitter 推文。 我的问题是我需要为给定列表中的每个单词阅读 5 条推文。
代码如下:
class TweetListener(StreamListener):
def on_status(self,status):
print "TWEET ARRIVED!!!"
print "Tweet Text : %s" % status.text
print "Author's name : %s" % status.author.screen_name
print "Time of creation : %s" % status.created_at
print "Source of Tweet : %s" % status.source
time.sleep(10)
return True
def on_error(self, status):
print status
if status == 420:
print "Too soon reconnected, Exiting!!"
return False
sys.exit()
def search_tweets():
twitterStream = Stream(connect().auth, TweetListener())
twitterStream.filter(track=['Cricket','Maths','Army','Sports'],languages = ["en"],async=True)
这里我需要为板球、数学、陆军和运动分别获取 5 条推文
我得到的是针对上述元素的无限数量的推文。
非常感谢任何帮助。
谢谢和问候。
class TweetListener(StreamListener):
def __init__(self, list_=None,dict_= None):
self.keys_= list_
self.dict = dict_
def on_status(self, status):
str_ = status.text.lower()
for key in self.dict.keys():
if key.lower() in str_.lower():
if self.dict[key] <= 0:
return True
else:
self.dict[key] -=1
self.performAction(key,status)
if all(value == 0 for value in self.dict.values()):
return False
def on_error(self, status):
print status
if status == 420:
print "Too soon reconnected . Will terminate the program"
return False
sys.exit()
def create_dict(list_):
no_of_tweets = 5
dict_ = {k:no_of_tweets for k in list_ }
return dict_
def search_tweets():
search_word = ['Cricket','Maths','Army','Sports']
twitterStream = Stream(connect().auth, TweetListener(list_=search_word , dict_=create_dict(search_word)))
twitterStream.filter(track=search_word ,languages = ["en"],async=True)
在这里,我初始化了一个列表,其中包含要搜索推文的所有必需单词,然后我创建了一个字典,其中 key:value 作为 word_to_be_searched:count_as_5 在 create_dict(list_)函数,如Cricket:5、Maths:5、Army:5、Sports:5等。然后我将列表和字典一起传递给 TweetListener class.
我覆盖 on_status 函数来检索推文,然后将推文与我的字典的关键字段进行比较。很明显会有匹配,然后,在这种情况下,我将值(此处作为计数器)减 1。 当所有的值都变成0的时候,那么我returnfalse就打破循环,关闭线程。
[注意,如果某个键对应的任何值变为零,则表示已经捕获了所需的推文,因此我们不会继续处理任何推文那个词。]
然后在 performAction(key, status) 函数中 {key=one of the searched words and status = tweet captured} 我执行我要求的任务。