こんにちは!!ようこそ、当ブログgcbgardenへ。管理人のsakurabaaa(@sakurabaaa_g)です。
前回はtwitterのAPIを使ってターミナルからツイートしてみるという記事を書きました。
ツイートの次は情報を収集してみようと思い、あるキーワードが含まれるツイートをCSVファイルに出力するというプログラムを作ってみました。
- MacOSSierra(ver.10.12.5)
- Pythonのバージョンは2.7.13
Twitter API操作の準備
まずはじめに、TwitterのAPIを使うためにデベロッパー登録を行う必要があります。
以下のリンクにとっても親切な解説ページが準備されているのでまずは登録を済ませましょう。
登録を行うプロセスで以下の4つのキーをメモしておいてください。
- Consumer Key(API Key)
- Consumer Secret(API Seacret)
- Access Token
- Access Token Secret
登録と各APIキーなどが準備できたら次のステップに進みます。
Twitterのモジュールをインストール
Python-twitterのモジュールをターミナルからインストールします。
1 2 | sudo pip install python-twitter Password: |
Macユーザーの方は、Homebrewをインストールしておくと便利です!
さて、ここまで準備ができたら実際にコーディング(コピペ)をしていきます。
下に書いたコードをテキストファイルに記述し拡張子を.pyにしたものを保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #!/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」が含まれるツイートを収集するプログラムになっています。
1 | tweets = api.GetSearch("ここに検索したい文字列を書く",count=100) |
自由に書き換えてください!!
実際にツイートを収集してみる!
ここまでできたら準備完了OK!!
実際にコードを実行してみましょう!! 今回、ぼくは「tweetcsv.py」というファイルで保存しています。
1 | python tweetcsv.py |
ターミナル上で実行すると…
同じディレクトリ階層で「tweetcsv.csv」 というファイルが生成されます。
csvファイル内を確認してみてください。指定した文字列を含んだツイート内容が羅列されています。
UnicodeEncodeErrorの解決方法
1 | UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128) |
もしこのようなエラーメッセージが表示されてしまったら、、、
1 2 3 4 5 | #findでsite-packagesの位置を探す find / -name site-packages #次にsitecustomize.pyを探します /usr/local/lib/python2.7/site-packages/sitecustomize.py |
「sitecustomize.py」内に以下を書き込みます。
1 2 | import sys sys.setdefaultencoding('utf-8') |
エンコーディング情報については、以下のようにして確認できます。
1 2 3 4 5 6 7 8 9 10 11 | #デフォルト $ python >>> import sys >>> sys.getdefaultencoding() 'ascii' #「sitecustomize.py」を書き換えると以下のようになります $ python >>> import sys >>> sys.getdefaultencoding() 'utf-8' |
これで再度pythonコマンドを実行してみると成功するはずです!!
まとめ
モジュールの仕様上、最大100件までしか収集できないようなので上限を解放する方法とツイートされた時間がわかるようにしてみます。
twitterの可能性をどんどん広げていきます!!
(いまさらww)
この記事を書いた人。
20代。とあるネットベンチャーでがんばる働き屋さん、ブロガー。
書きたいことを気ままに書いてます!
Python、プログラミング、米株、カメラ、野球観戦がすき。趣味は新宿散策。