More Related Content Similar to python-twitterを用いたTwitterデータ収集 Similar to python-twitterを用いたTwitterデータ収集 (20) python-twitterを用いたTwitterデータ収集2. python-twitter
l python-twitter : TwitterAPIのpythonラッパー
http://static.unto.net/python-twitter/0.6/doc/twitter.html
(英語ドキュメント)
3. 環境構築
l 以下のライブラリをダウンロード・インストール
l simplejson
simplejson 2.6.1 : Python Package Index
l httplib2
httplib2 - A comprehensive HTTP client library in Python - Google Project
Hosting
l oauth2
http://github.com/simplegeo/python-oauth2
l python-twitterのダウンロード・インストール
l python-twitter
python-twitter - A python wrapper around the Twitter API - Google Project
Hosting
4. OAuth認証
l 全タイムラインの取得などは,認証なしで⾏行行える
l ⾃自分のタイムラインの取得やツイートの投稿などは,
認証を⾏行行わなければ使えない
l Twitter Developersに登録し,Consumer keyとAccess Token
をもらいましょう
5. インポート・認証
l 以下でOK
>>> import twitter
>>> api = twitter.Api()
l 認証が必要なら,以下のようにする
>>> api = twitter.Api(consumer_key=CONSUMER_KEY,
consumer_secret=CONSUMER_SECRET,
access_token_key=ACCESS_TOKEN,
access_token_secret=ACCESS_TOKEN_SECRET,
cache=None)
6. ユーザ情報を取得(1/2)
GetUser(user)
>>> user = api.GetUser('pika_shi')
>>> user.id # ユーザid
141077154
>>> print user.screen_name # ユーザ名
pika_shi
>>> print user.name # 名前
ぴかし
>>> print user.location # 位置情報
京都
>>> print user.description # ⾃自⼰己紹介
京都⼤大学/⼯工学部/情報学科/B4/KUIS4/社会情報学専攻/京炎そでふれ!/彩京前
>>> user.protected # ツイートを⾮非公開にしてるか
False
>>> user.utc_offset # 協定世界時とローカルタイムとの時差(秒)
32400
>>> print user.time_zone # タイムゾーン
Osaka
7. ユーザ情報を取得(2/2)
GetUser(user)
>>> print user.url # URL
http://d.hatena.ne.jp/pika_shi/
>>> user.status # 最新ツイート
<twitter.Status object at 0x101052090>
>>> user.statuses_count # ツイート数
3547
>>> user.followers_count # フォロワー数
376
>>> user.friends_count # フォロイー数
297
>>> user.favourites_count # お気に⼊入り数
212
10. ツイート情報を取得(1/2)
>>> tweet = timeline[0]
>>> print tweet.created_at # ツイートされた時間(協定世界時)
Sun Dec 11 05:07:32 +0000 2011
>>> tweet.created_at_in_seconds # ツイートされた時間(UNIX秒)
1323580052
>>> tweet.favorited # お気に⼊入りに⼊入れているか(要認証)
False
>>> print tweet.in_reply_to_screen_name # 返信先のユーザ名
petitviolet
>>> print tweet.in_reply_to_user_id # 返信先のユーザid
116969050
>>> tweet.in_reply_to_status_id # 返信先のツイートid
145731319173877760
>>> tweet.truncated # 140字を超えているか
False
>>> print tweet.source # ツイートされたクライアント
<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a
11. ツイート情報を取得(2/2)
>>> tweet.id # ツイートid 145731418545336320
>>> print tweet.text # ツイートの内容(テキスト)
@petitviolet 了解^^
>>> print tweet.location # ツイートの位置情報 None
>>> print tweet.relative_created_at # ツイートされた時間
about an hour ago
>>> tweet.user # ツイートしたユーザの情報
<twitter.User object at 0x101052b50>
12. 全体タイムラインを取得
GetPublicTimeline()
>>> timeline = api.GetPublicTimeline()
>>> for tweet in timeline:
... print tweet.text
...
*yawns*
Just gave up in Monopoly cause he is so brutal. Gave all my money
・・・
LMFAOOOOO !
I have tons of followers and got them by using this easy program!
⽇日本語少ない
13. ユーザのフォロイーを取得
GetFriends()
>>> friends = api.GetFriends()
>>> for friend in friends:
... print friend.screen_name
...
teracy
happy_nina
・・・
toumeinomochi
sakikuri1023
最⼤大100件までを取得
python-twitterで100⼈人以上のフォロイーを取得 - Hello World !
16. データ収集時に気を付けること
l タイムアウトの設定
タイムアウトを設定しておかないと,何らかの原因でデータが
取得できない時にプログラムが⽌止まる
import socket
socket.setdefaulttimeout(30) # 引数は秒数
l executemany (sqlite3)
⼤大量にデータを収集する際は,データごとにinsertするより,
⼀一気にinsertできるexecutemanyを使うとよい
17. データ収集時に気を付けること
l デタッチ
プログラムをバックグラウンドで動かし続けるには,nohupよ
りもスクリーンのデタッチ(C-j d)の⽅方がよい
デタッチだと,「予想以上に実⾏行行に時間くってるけどもう帰ら
ないといけない」的な時に途中でバックグラウンドジョブに変
更できる
l API制限
l 来年の3⽉月からかなり制限がキツくなるらしい