我正在设置一个流侦听器,然后通过特定的关键字和位置边界框过滤推文,我想将过滤结果保存到json文件中。 但是我发现流监听程序的所有结果都在json文件中,而不仅仅是过滤后的结果。 我认为这可能是因为“保存json文件”代码位于Mystreamlistener类中,而过滤代码位于其后。 但是我不知道如何修改我的代码。这是我的代码:
这是我的第一个代码:
try:
import json
except ImportError:
import simplejson as json
import tweepy, sys
from time import sleep
import csv
consumer_key = 'XX'
consumer_secret = 'XX'
access_token = 'XX'
access_token_secret = 'XX'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
box = [-178.2,6.6,-49.0,83.3]
import tweepy
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text.encode('utf-8'))
with open('government.json', 'a') as f:
tweet=str(status.user)
nPos=tweet.index("_json=")
tweet=tweet[nPos+6:]
ePos=tweet.index("id=")
tweet=tweet[:ePos-2]
f.write(tweet+'\n')
def on_error(self, status_code):
if status_code == 420:
#returning False in on_data disconnects the stream
return False
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(api.auth, listener=myStreamListener)
myStream.filter(track=['trump'], locations=(box))
我已经尝试过有关Ajeet Khan的回答: How to save a tweepy Twitter stream to a file? 但是我不知道该如何调用该类,第二个代码是我根据Ajeet Khan的回答尝试过的。
try:
import json
except ImportError:
import simplejson as json
import tweepy, sys
from time import sleep
import csv
consumer_key = 'XX'
consumer_secret = 'XX'
access_token = 'XX'
access_token_secret = 'XX'
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
box = [-178.2,6.6,-49.0,83.3]
import tweepy
class MyStreamListener(tweepy.StreamListener):
def on_status(self, status):
print(status.text.encode('utf-8'))
def on_error(self, status_code):
if status_code == 420:
#returning False in on_data disconnects the stream
return False
class StdOutListener(tweepy.StreamListener):
def on_data(self, status):
#print data
with open('fetched_tweets.txt','a') as tf:
tf.write(status)
return True
def on_error(self, status):
print(status)
myStreamListener = MyStreamListener()
myStream = tweepy.Stream(api.auth, listener=myStreamListener)
myStream.filter(track=['trump'], locations=(box))
StdOutListener()