使用Twitter API访问Tweet的JSON属性

时间:2018-10-28 19:58:02

标签: python json twitter

这是一个非常基本的问题,但是不管它让我难为情。我正在尝试访问tweet(找到here的文档)的特定属性,例如“文本”。我尝试通过data [“ text”]访问它,但是这给了我以下错误TypeError: string indices must be integers

因此,我尝试使用json.loads(data)解析数据,以为这将允许我访问tweet的每个属性。但是,它只返回推文的文本部分,这意味着当我执行print(newData)时,它会打印出文本。尽管这很有用,但我需要能够访问tweet的其他属性,例如"created_at"

因此,我的问题是,我如何解析或访问该推文,从而使我能够挑选出我需要的各个属性。重申一下,我确定这很简单,但是我是处理JSON对象的新手,我发现的其他解决方案只是告诉我使用不是我想要的loads()。

    class TwitterStreamer():
    """
    Class for streaming and processing live tweets for a given list of hashtags
    """
    def stream_tweets(selfself, hashtag_list):
        listener = StdOutListener()
        auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
        auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

        stream = Stream(auth, listener)

        stream.filter(track=hashtag_list)


class StdOutListener(StreamListener):

    def on_data(self, data):
        print(data)
        newData = json.loads(data)
        print(newData["text"])
        return True

    def on_error(self, status):
        print(status)


def main():
    hashtag_list = ['Chelsea']
    fetched_tweets_filename = "tweets.json"
    twitter_streamer = TwitterStreamer()
    twitter_streamer.stream_tweets(hashtag_list)

main()

2 个答案:

答案 0 :(得分:0)

尝试使用json.load()将JSON作为Python对象加载。方法json.loads()将JSON作为字符串加载,这就是为什么它为您提供TypeError Exception的原因,因为字符串对象的索引只能是整数。

答案 1 :(得分:0)

尝试使用“。”操作员访问推文的属性。我在代码中使用了它,如下所示:

Auto imports

在这种情况下,我以JSON数据的形式获取了用户“状态” 是该JSON对象“ follow_user”

的属性