【问题标题】:how to get specific data key in json response from api twitter in python如何从python中的api twitter获取json响应中的特定数据键
【发布时间】:2021-06-30 19:40:46
【问题描述】:

我试图在响应 API Twitter 的结果中仅获取“id”和“text”的属性。但是下面的代码导致所有关键属性。如何获取数据“id”和“text”?

from tweepy import Stream
from tweepy.streaming import StreamListener

class StdOutListener(StreamListener):

def on_data(self, data):
    try:
        with open('python2.json', 'a') as f:
            f.write(data)
            return True
    except BaseException as e:
        print("Error on_data: %s" % str(e))
    return True

def on_error(self, status_code):
    if status_code == 420:
        print(status_code)
        return False

if __name__ == '__main__':
    l = StdOutListener()
    auth = OAuthHandler(consumer_key, consumer_secret)
    auth.set_access_token(access_token, access_token_secret)
    stream = Stream(auth, l)
    hasil = stream.filter(track=['wedding','sunday'])

结果:

 {"created_at":"Sun Apr 04 17:16:28,
 "id":1378758380722946049,
 "id_str":"1378758380722946049",
 "text":"Nonton wedding atta aurel jadi pen nikah",
 "source":"Twitter Web",
 "truncated":false,
 "in_reply_to_status_id":null,
 "in_reply_to_status_id_str":null
 }

预期的结果只是 id 和 text

{
 "id":1378758380722946049,
 "text":"Nonton wedding atta aurel jadi pen nikah"
}

【问题讨论】:

    标签: python json api twitter web-crawler


    【解决方案1】:

    您似乎只想编写一个包含 idtext 字段的 JSON,因此您的代码的修改版本将正确同时采用这两个字段jsonData 之外的字段,创建它自己的新 JSON,仅包含 idtext (newJSON),然后将其写入您的文件。

    import json
    from tweepy import Stream
    from tweepy.streaming import StreamListener
    
    class StdOutListener(StreamListener):
    
        def on_data(self, data):
            try:
                with open('python2.json', 'a') as f:
                    jsonData = json.loads(data)
                    id = jsonData["id"]
                    text = jsonData["text"]
                    newJSON = {'id': id, 'text': text}
                    f.write(json.dumps(data))
                    return True
            except BaseException as e:
                print("Error on_data: %s" % str(e))
            return True
    

    P.S.:您问题中的代码存在严重的格式问题, on_dataon_error 应缩进到 StdOutListener 类下。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-19
      • 1970-01-01
      • 2013-09-18
      • 2021-03-10
      • 2021-06-14
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      相关资源
      最近更新 更多