我正在使用 Tweepy 并想跟踪两个单独的术语,“wordA”和“wordB”(意味着每条推文都将包含其中任何一个),但我也想将它们的结果存储在单独的结构中。是否可以在同一个身份验证对象上有两个单独的流侦听器?任何演示如何执行此操作的代码示例将不胜感激。谢谢
问问题
952 次
1 回答
1
每个用户只允许一个流,因此您必须在收到数据后将它们分开。
我倾向于这样做:
import tweepy
from tweepy.utils import import_simplejson
json = import_simplejson()
tracklist1=[wordA, wordAA]
tracklist2=[wordB, wordBB]
class CustomStreamListener(tweepy.StreamListener):
def on_data(self, data):
if 'in_reply_to_status_id' in data:
temp=json.loads(data)
words = [word.lower().strip('!,.:?"') for word in temp['text'].split()]
if set(words) & set(tracklist1):
print 'match A'
elif set(words) & set(tracklist):
print 'match B'
else:
print 'no match found'
对我来说效果很好,并且使用 tracklist1 和 tracklist2 的列表允许您为您所关注的每个主题构建更复杂的搜索。您总是会得到一些不匹配的内容,因为 twitter 与用户名以及流 API 上的文本匹配。
要正确执行此操作,您可能需要过滤掉所有不是字母数字的内容,而不是像我在上面的示例中所做的那样仅删除最常见的标点符号。
于 2012-11-10T22:11:05.640 回答