PythonとtwitterのAPIを使ってツイートを収集するプログラムを作ってみた

Share

こんにちは!!ようこそ、当ブログgcbgardenへ。管理人のsakurabaaa(@sakurabaaa_g)です。

前回はtwitterのAPIを使ってターミナルからツイートしてみるという記事を書きました。

ツイートの次は情報を収集してみようと思い、あるキーワードが含まれるツイートをCSVファイルに出力するというプログラムを作ってみました。

<環境構成>

  • MacOSSierra(ver.10.12.5)
  • Pythonのバージョンは2.7.13
スポンサーリンク

Twitter API操作の準備

まずはじめに、TwitterのAPIを使うためにデベロッパー登録を行う必要があります。

以下のリンクにとっても親切な解説ページが準備されているのでまずは登録を済ませましょう。

参考Twitter REST APIの使い方

登録を行うプロセスで以下の4つのキーをメモしておいてください。

  • Consumer Key(API Key)
  • Consumer Secret(API Seacret)
  • Access Token
  • Access Token Secret

登録と各APIキーなどが準備できたら次のステップに進みます。

Twitterのモジュールをインストール

Python-twitterのモジュールをターミナルからインストールします。

sudo pip install python-twitter
Password:

Macユーザーの方は、Homebrewをインストールしておくと便利です!

さて、ここまで準備ができたら実際にコーディング(コピペ)をしていきます。

下に書いたコードをテキストファイルに記述し拡張子を.pyにしたものを保存します。

#!/usr/bin/env python                                                                                                                                             
# -*- coding:utf-8 -*-  

#モジュールのインポート
import twitter
import csv
import sys

#APIキーの設置
CONSUMER_KEY =  'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
CONSUMER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_TOKEN = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
ACCESS_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxx'

#twitterAPIのセット
api = twitter.Api(consumer_key=CONSUMER_KEY,
                  consumer_secret=CONSUMER_SECRET,
                  access_token_key=ACCESS_TOKEN,
                  access_token_secret=ACCESS_SECRET)

#検索したい文字を指定
#count上限100件でツイート収集
tweets = api.GetSearch("gcbgarden",count=100)
 
#csvファイル生成
filename = "tweetcsv.csv"
writecsv = csv.writer(file(filename, 'w'), lineterminator='\n')

#ツイートをcsvファイルに書き込み
for tweet in tweets:
    writecsv.writerow([tweet.text.encode('shift_jis','ignore')])

※「’xxxxxxxxxxxxxxxxxxxxxxxxxxxx’」 の x の部分を先ほどメモしたAPIに書き換えてください。

今回は、当サイト「gcbgarden」が含まれるツイートを収集するプログラムになっています。

tweets = api.GetSearch("ここに検索したい文字列を書く",count=100)

自由に書き換えてください!!

実際にツイートを収集してみる!

ここまでできたら準備完了OK!!

実際にコードを実行してみましょう!! 今回、ぼくは「tweetcsv.py」というファイルで保存しています。

python tweetcsv.py

ターミナル上で実行すると…

同じディレクトリ階層で「tweetcsv.csv」 というファイルが生成されます。

csvファイル内を確認してみてください。指定した文字列を含んだツイート内容が羅列されています。

UnicodeEncodeErrorの解決方法

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

もしこのようなエラーメッセージが表示されてしまったら、、、

#findでsite-packagesの位置を探す
find / -name site-packages

#次にsitecustomize.pyを探します
/usr/local/lib/python2.7/site-packages/sitecustomize.py

「sitecustomize.py」内に以下を書き込みます。

import sys
sys.setdefaultencoding('utf-8')

エンコーディング情報については、以下のようにして確認できます。

#デフォルト
$ python
>>> import sys
>>> sys.getdefaultencoding()
'ascii'

#「sitecustomize.py」を書き換えると以下のようになります
$ python
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

これで再度pythonコマンドを実行してみると成功するはずです!!

まとめ

モジュールの仕様上、最大100件までしか収集できないようなので上限を解放する方法とツイートされた時間がわかるようにしてみます。

twitterの可能性をどんどん広げていきます!!
(いまさらww)

この記事を書いた人。
20代。とあるネットベンチャーでがんばる働き屋さん、ブロガー。
書きたいことを気ままに書いてます!
Python、プログラミング、米株、カメラ、野球観戦がすき。趣味は新宿散策。

スポンサーリンク

Share

Follow