Я пытаюсь очистить данные 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.....
...
...
}