如何将tweepy过滤器的结果保存到json文件中?

时间:2019-01-10 03:23:13

标签: python tweepy

我正在设置一个流侦听器,然后通过特定的关键字和位置边界框过滤推文,我想将过滤结果保存到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()

0 个答案:

没有答案