我希望跟踪包含一组特定单词但不包含其他单词的推文。例如,如果我的筛选器是:"taco" AND ("chicken" OR "beef")。
它应该返回这些推文:
-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都比较新。这个链接和这个链接似乎是类似的问题,但它们与同时跟踪多个术语相关,而不是跟踪包含一个术语的推文子集。我在tweepy文档中没有找到任何内容。
我知道另一个选项是跟踪所有包含“taco”的推文,然后通过“chicken”或“beef”进行过滤,并将其存储到我的数据库中,但我担心如果我在Python内部进行通用搜索然后进行过滤,就会遇到1%的流速限制问题,因此我更喜欢从Twitter中首先仅流传我想要的术语。
谢谢提前-
山姆
track=['hello,bye']
或使用track=['hello', 'bye']
,或者可能没有区别?@AaronHill - Soheil Pourbafrani