TwitterAPI で取得したツイートを MongoDB に保存する(Windows、pythonで)

以前に書いた、こちらの記事 「TwitterAPI でツイートを大量に取得」 で、ツイートを取得するプログラムを作ってみました。この時は、取得したツイートを print して終わりだったのですが、せっかくなので保存することを考えてみます。

保存先は MongoDB です。スキーマの定義が不要で楽そうだし、キー・バリュー形式でデータ保存するので TwitterAPI との相性もよさそうだからです。

MongoDB 環境づくり

インストール

インストールはいたって簡単でした。

  • MongoDB のサイト から下記インストーラー(時点で最新)をダウンロード
    mongodb-win32-x86_64-2008plus-ssl-3.2.6-signed.msi
  • ② インストール (デフォルトのままで OK)
  • ③ データ用、ログ用のディレクトリを作成 (どこでもいいし、名前も任意)
       たとえば
        データ用 E:\MongoDB\data
        ログ用  E:\MongoDB\log

起動確認

インストール先ディレクトリへ移動し、

起動。–dbpath にデータ用ディレクトリ、–logpath にログ用ディレクトリ\ログファイル名

Mongoシェル

Mongoシェル は対話型のクライアントで、コマンドベースで MongoDB を操作できます。Oracle にとっての SQL*Plus みたいなものです。

起動は、インストール先ディレクトリへ移動し

と入力するだけです。

バッチファイル

MongoDB をサービスとして登録可能なようですが、たまに使いたいだけなので、それはちょっと大げさ。バッチファイルを作成することにしました。

MongoDB 起動用

Mongoシェル 起動用

pymongo

python から MongoDB を操作するためにパッケージ pymongo をインストールします。



これで環境まわりは OK。

ツイート保存

ツイート取得機能は 「TwitterAPI でツイートを大量に取得」 で作成済みなので、それをそのまま利用します。

MongoDB に保存

以下のプログラムで、”渋谷” を含むツイートを 50,000 件取得し MongoDB に保存します。DB名、コレクション名は

  • DB名 : mydb
  • コレクション名 : shibuya

にしました。ちなみに “コレクション” というのは RDB の “テーブル” に相当します。

tweet をそのまま insert してもいいのですが、TwitterAPI のレスポンスには結構いろいろな付加情報がのっており、その分サイズも大きいので、ここでは欲しい項目だけ tweet2 に移しかえて保存しています。トータルの実行時間は一時間強でした。

MongoDB から読み込み

書き込んだツイートを読みだします。

Mongo シェルで確認

保存した内容は Mongo シェルでも確認できます。

MongoDB 終了

Mongoシェルの終了は

MongoDB の終了は ctrl-C です(データ書き込み中だとこわい。正しい落とし方が他にあるのかも)。

コメントはお気軽に