Использование Tweepy Stream вызывает проблемы с обработкой при чтении твита JSON - PullRequest
0 голосов
/ 16 июня 2020

Я пытаюсь очистить данные Twitter с помощью пакета TweePy на Python3 .8

Я определил функцию для структурирования получаемых мной твитов. Фрагмент кода выглядит примерно так:

def GetStructuredTweet(inp):
    try:
        created_at = inp["created_at"]
        id_str = inp["id_str"]
        user_id = inp["user"]["id_str"]
        is_quote_status = inp["is_quote_status"]

        if "full_text" in inp:
            text = inp["full_text"]
        else:
            print(inp["id_str"],"Full_Text: ","full_text" in inp, end = '')
            print("Extended_Tweet", "extended_tweet" in inp)

            text = inp["extended_tweet"]["full_text"]
        text = inp["full_text"] if ("full_text" in inp) else inp["extended_tweet"]["full_text"]

        likes = inp["favorite_count"]
        retweet_count = inp["retweet_count"]
        verified = inp["user"]["verified"]
        json_body = json.dumps(inp, indent = 4)

        user_loc = inp["user"]["location"] or np.nan
        location = getEnsembleLoc(inp["place"], user_loc, text)

        k = pd.Series([created_at,
                       id_str, user_id,
                       is_quote_status,
                       text, verified,
                       likes, retweet_count,
                       location, json_body
                      ],
                 index = col_indexes).to_frame().T
        return k

    except BaseException as ex:
        print('failed in Structuring the tweet: ',inp["id_str"],ex)
        failed_tweets.append(inp["id_str"])
        return pd.DataFrame(columns = col_indexes)

И вот как я запускаю поток:

if __name__=="__main__":
    idSet = Manage_ID()
    myStreamListener = MyStreamListener()
    myStream = tweepy.Stream(auth = api.auth, listener=myStreamListener, tweet_mode='extended')
    myStream.filter(track=['Rice'], is_async=True)

Когда я пытаюсь передать поток, я получаю следующий результат:

1272579931726385153 Full_Text: False Extended_Tweet False

не удалось структурировать твит: 1272579931726385153 'extended_tweet'

Однако, когда я запрашиваю эти неудачные твиты индивидуально и вызовите функцию GetStructuredTweet (). Они работают!

Вот как выглядит JSON этого твита:

{'created_at': 'Mon Jun 15 17:21:13 +0000 2020',
 'id': 1272579931726385153,
 'id_str': '1272579931726385153',
 'full_text': 'Tamir Rice would’ve been graduating with the class of 2020.....
 ...
 ...
}
...