LoginSignup
4
5

More than 3 years have passed since last update.

【Twitter】ダウンロードした(自分のアカウントの)過去ツイートを綺麗なCSVにしたい

Last updated at Posted at 2019-12-07

Twitterでは、「設定」>「アカウント」>「Twiterデータ」>「アーカイブをダウンロード」
に、自分の過去のツイートを全てダウンロードする機能が用意してあることはご承知の通りです。
スクリーンショット 2019-12-07 17.53.12.png

ダウンロードしたファイルには過去のツイート、RTしたツイート、いいねしたツイートの情報、ダイレクトメッセージなどが含まれています。(通常は一緒にダウンロードされるindex.htmlを開くことで閲覧できるようですが、自分の場合にはindex.htmlがダウンロードされませんでした。なんでだろう)


2019/12/15 追記
index.html はそもそもダウンロードされない仕様に変更になっている模様です。

BERTを理解しながら自分のツイートを可視化してみるハンズオン
↑こちらの記事を読んでて気付きました。
↓(参考)
【解決済】twitterの全ツイート履歴がダウンロードできない【方法】


テキストマイニングや何らかの分析を行いたい場合には tweet.json を読むことになると思います。本稿ではこちらのjsonファイルを、形態素解析などに使いやすいようなcsvに加工します。作成するcsvは「タイムスタンプ」と「テキスト本文」の2カラムです。

最終的にできるCSVのイメージ
n5v579QliBDG6o51575723317_1575723341.png

環境
Python 3.6.5
Mac OS Mojave 10.14.4

pandas==0.23.0

ダウンロードしたjsonを開くとこんな感じになっているとおもいます。
tLvy3PlzlPJ2Khh1575731228_1575731416.jpg

赤いアンダーラインを引いた

window.YTD.tweet.part0 = 

は不要ですので消してください。そのうえで拡張子を .txt に変更し、作業するディレクトリに入れてください。

read_dl_tweet.py
import pandas as pd
import json

tweets_file = open("tweet.txt", "r")
tweet = json.load(tweets_file)

上のスクリプトでpandasのdataframeとしてjsonを開きます。
カラムはたくさんあるのですが、必要なカラムだけを抜き出します。

read_dl_tweet.py
df = tweet_data_frame.loc[:,["created_at","full_text"]]

csvにしていく際に改行やカンマなどの困った文字が入っているので、これらを除去します。
regex=Trueとしないとうまくいきませんでした。

read_dl_tweet.py
df = df.replace(['\n',',',' ','\r'],'',regex=True)

また、タイムスタンプの形式が、ソートに使えない形になっているので、これを読みやすい形に直します。pandasのto_datetimeメソッドで一発で変換できました。

read_dl_tweet.py
df_date = pd.to_datetime(df["created_at"])
df["date_form"] = df_date
df_sorted = df.sort_values("date_form") 
df_text_date = df_sorted.loc[:,["date_form","full_text"]]

新しく作ったタイムスタンプでソートしています。

read_dl_tweet.py
df_text_date.to_csv("df_text_date.csv", header=False, index=False,sep=',',encoding='utf-16')

csvを出力する際のオプションは適宜変更してください(区切りをタブにするなど)。

次記事では作成したcsvから期間ごとのツイート数をグラフに出してみます。

今回のコード: https://github.com/KanikaniYou/plot_tweet_graph

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5