小编cly*_*yde的帖子

Tweepy公共流过滤变化的变量

我正在使用Tweepy库进行python访问公共twitter流并遇到一个问题,一旦流运行,它就不会停止.现在,这对它的作用是有意义的,但是我希望它开始使用空的用户ID列表进行过滤,过了一会儿,在有人发布特定的跟踪词之后,用户ID被添加到列表中,这样一旦他们发布了一个单词,跟踪器开始跟踪他们的所有推文.问题是,一旦使用初始过滤器选项启动流,更改变量不会影响过滤器; 它只是继续使用初始参数.

userIDs = []

trackWords = ["#Obama"]

def stream():

    s = Stream(auth, StreamListener())

    s.filter(follow = userIDs, track = trackWords)
Run Code Online (Sandbox Code Playgroud)

在添加新关键字后再次回忆流定义时,我能够解决这个问题,但我有多个流搜索,我将它们放在不同的线程中,这样它们就可以同时运行.我无法弄清楚如何刷新线程,因此尝试刷新过滤器而不回忆定义似乎更容易.

我对编程很新,所以也许这是一个我还不知道的基本概念,但希望有一个简单的技巧可以让它更新.

这是我的所有相关代码,如果这有助于任何人.以上只是一个快速的事情来帮助显示我在说什么:

userIDs = []
userNames = []

account = ['@DMS_423']

publicKeyWords = ['the','be','to','of','and','are','is','were','was']

class AStreamListener(StreamListener):
    def on_status(self, status):
        if status.author.screen_name not in userNames:
            userNames.append(str(status.author.screen_name))
            userIDs.append(str(api.get_user(str(status.author.screen_name)).id))
            print status.author.screen_name, "has joined the game."

def uStream():
    s = Stream(auth, StreamListener())
    s.filter(follow = userIDs)

def pStream():
    ps = PStream(pAuth, PStreamListener())
    ps.filter(track = publicKeyWords)

def aStream():
    adds = Stream(auth, AStreamListener())
    adds.filter(track = account) …
Run Code Online (Sandbox Code Playgroud)

python twitter stream filter tweepy

5
推荐指数
1
解决办法
3263
查看次数

过滤从状态/过滤器(流API)收到的推文

我有N个跟踪的不同关键字(为简单起见,让N = 3).所以在GET状态/过滤器中,我将在"track"参数中给出3个关键字.

现在我将收到的推文可以来自我提到的3个关键词中的任何一个.问题是我想解决哪个推文对应哪个关键字.即推文和关键字之间的映射(在"track"参数中提到).

显然,没有对收到的推文进行任何处理就没有办法做到这一点.

所以我想知道进行这种处理的最佳方法是什么?在推文文本中搜索关键字?不区分大小写的情况怎么样?当同一个关键词中存在多个单词时,例如:"Katrina Kaif"?

我目前正在尝试制定一些正则表达式......

我认为最好的方法是使用与最初使用的状态/过滤器API相同的逻辑(正则表达式等).如何知道Twitter API状态/过滤器本身使用什么逻辑来匹配推文到关键字?

建议吗?救命?

PS:我使用的是Python,Tweepy,Regex,MongoDb/Apache S4(用于分布式计算)

python twitter tweepy tweetstream

5
推荐指数
1
解决办法
3696
查看次数

标签 统计

python ×2

tweepy ×2

twitter ×2

filter ×1

stream ×1

tweetstream ×1