我希望跟踪包含特定单词集但不包含其他单词的推文。例如,如果我的过滤器是:“炸 Jade 米饼”AND(“鸡肉”或“牛肉”)。
它应该返回这些推文:
-I am eating a chicken taco.
-I am eating a beef taco.
它不应该返回这些推文:
-I am eating a taco.
-I am eating a pork taco.
这是我目前正在运行的代码:
from tweepy import Stream
from tweepy import OAuthHandler
from tweepy.streaming import StreamListener
import time
import json
# authentication data- get this info from twitter after you create your application
ckey = '...' # consumer key, AKA API key
csecret = '...' # consumer secret, AKA API secret
atoken = '...' # access token
asecret = '...' # access secret
# define listener class
class listener(StreamListener):
def on_data(self, data):
try:
print data # write the whole tweet to terminal
return True
except BaseException, e:
print 'failed on data, ', str(e) # if there is an error, show what it is
time.sleep(5) # one error could be that you're rate-limited; this will cause the script to pause for 5 seconds
def on_error(self, status):
print status
# authenticate yourself
auth = OAuthHandler(ckey, csecret)
auth.set_access_token(atoken, asecret)
twitterStream = Stream(auth, listener())
twitterStream.filter(track=["taco"]) # track what you want to search for!
代码的最后一行是我正在努力解决的部分;如果我使用:
twitterStream.filter(track=["taco","chicken","beef"])
它将返回包含这三个词中任何一个的所有推文。我尝试过的其他事情,例如:
twitterStream.filter(track=(["taco"&&("chicken","beef")])
返回一个语法错误。
我对 Python 和 Tweepy 都很陌生。 this 和 this 看起来很相似,但它们与同时跟踪多个词条有关,而不是跟踪包含一个词条的推文子集。我在 tweepy documentation 中找不到任何东西。
我知道另一种选择是跟踪所有包含“taco”的推文,然后通过“chicken”或“beef”过滤到我的数据库中,但我担心如果我进行一般搜索然后会遇到 1% 的流率限制在 Python 中过滤它,所以我更喜欢首先从 Twitter 流式传输我想要的术语。
提前致谢-
山姆
最佳答案
Twitter 不允许您非常精确地匹配关键字。但是,track parameter documentation 指出关键字内的空格与逻辑 ANDS 等效。您指定的所有术语都进行了 OR 运算。
因此,要实现您的 "taco" AND ("chicken" OR "beef")
示例,您可以尝试使用参数 [ taco chicken
, taco beef
]。这将匹配包含单词 taco
和 chicken
或 taco
和 beef
的推文。然而,这并不是一个完美的解决方案,因为包含 taco
、 chicken
和 beef
的推文也会被匹配。
关于python - Tweepy 过滤器中的逻辑运算符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22339009/