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 でツイートを大量に取得」 で作成済みなので、それをそのまま利用します。(以降のサンプルでは http://ailaby.com/twitter_api/#id6_1 のソースを twitterAPI.py として保存して使用)

MongoDB に保存

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

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

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

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

MongoDB から読み込み

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

Mongo シェルで確認

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

MongoDB 終了

Mongoシェルの終了は

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

スポンサーリンク
その他の記事
  1. python勉強中。初心者です。
    「TwitterAPI でツイートを大量に取得」に記載されている「ソース」をコピペして、TweetsGetter.pyというpythonファイル名でセーブしました。次に、「MongoDB に保存」に記載されているコードをコピペして、getTweets_saveMongo.pyというファイル名でTweetsGetter.pyと同じディレクトリにセーブして、getTweets_saveMongo.py実行させたところ、以下のエラーとなります。
    修正方法をご教示願います。

    >python getTweets_saveMongo.py
    Traceback (most recent call last):
    File "getTweets_saveMongo.py", line8, in
    from twitterAPI import TweetsGetter
    ModuleNotFoundError: No module named 'twitterAPI'

  2. 自己解決しました。TweetsGetter.pyというpythonファイル名でセーブするのではなく、twitterAPI.pyでセーブし直したら解決しました。お騒がせしました。

コメントはお気軽に