0

我正在使用 Tweepy 并想跟踪两个单独的术语,“wordA”和“wordB”(意味着每条推文都将包含其中任何一个),但我也想将它们的结果存储在单独的结构中。是否可以在同一个身份验证对象上有两个单独的流侦听器?任何演示如何执行此操作的代码示例将不胜感激。谢谢

4

1 回答 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 回答