• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
python-twitterを用いたTwitterデータ収集
 

python-twitterを用いたTwitterデータ収集

on

  • 8,956 views

 

Statistics

Views

Total Views
8,956
Views on SlideShare
8,922
Embed Views
34

Actions

Likes
5
Downloads
55
Comments
0

3 Embeds 34

http://blog.negativemind.com 27
https://twitter.com 6
http://www.google.co.jp 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    python-twitterを用いたTwitterデータ収集 python-twitterを用いたTwitterデータ収集 Presentation Transcript

    • Twitterでのデータ収集 2012/9/21 @pika_shi
    • python-twitterl  python-twitter : TwitterAPIのpythonラッパー http://static.unto.net/python-twitter/0.6/doc/twitter.html (英語ドキュメント)
    • 環境構築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-oauth2l  python-twitterのダウンロード・インストール l  python-twitter python-twitter - A python wrapper around the Twitter API - Google Project Hosting
    • OAuth認証l  全タイムラインの取得などは,認証なしで⾏行行えるl  ⾃自分のタイムラインの取得やツイートの投稿などは, 認証を⾏行行わなければ使えない l  Twitter Developersに登録し,Consumer keyとAccess Token をもらいましょう
    • インポート・認証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)
    • ユーザ情報を取得(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
    • ユーザ情報を取得(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
    • ユーザのツイート⼀一覧を取得GetUserTimeline(user) >>> timeline = api.GetUserTimeline(pika_shi) >>> for tweet in timeline: ... print tweet.text ... @petitviolet 了解^^ @petitviolet いつくらいに確定しそうか聞いてみるわ! 増えること⾃自体はお店 ...
    • ユーザのタイムラインを取得GetFriendsTimeline(user) ※要認証 >>> timeline = api.GetFriendsTimeline(pika_shi’) >>> for tweet in timeline: ... print tweet.text ... 「成果をあげるのは才能ではなく、習慣だ。」 実験のレポートは⼀一旦寝てから始めよう※再徹夜ふらぐ乱⽴立立中 ・・・ いやー、晴天って良いなぁ マスオデックス
    • ツイート情報を取得(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 # 返信先のユーザid116969050>>> tweet.in_reply_to_status_id # 返信先のツイートid145731319173877760>>> tweet.truncated # 140字を超えているかFalse>>> print tweet.source # ツイートされたクライアント<a href="http://www.tweetdeck.com" rel="nofollow">TweetDeck</a
    • ツイート情報を取得(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>
    • 全体タイムラインを取得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!⽇日本語少ない
    • ユーザのフォロイーを取得GetFriends() >>> friends = api.GetFriends() >>> for friend in friends: ... print friend.screen_name ... teracy happy_nina ・・・ toumeinomochi sakikuri1023最⼤大100件までを取得python-twitterで100⼈人以上のフォロイーを取得 - Hello World !
    • ユーザのフォロワーを取得GetFollowers() ※なぜか要認証>>> followers = api.GetFollowers()>>> for follower in followers:... print follower.screen_name...FurusatoOuenhappy_nina・・・Foomin_110reigaaaaan
    • ツイートを投稿PostUpdate(tweet) ※要認証>>> postmsg = 疲れた>>> api.PostUpdate(postmsg.decode("utf-8"))
    • データ収集時に気を付けることl  タイムアウトの設定 タイムアウトを設定しておかないと,何らかの原因でデータが 取得できない時にプログラムが⽌止まる import socket socket.setdefaulttimeout(30) # 引数は秒数l  executemany (sqlite3) ⼤大量にデータを収集する際は,データごとにinsertするより, ⼀一気にinsertできるexecutemanyを使うとよい
    • データ収集時に気を付けることl  デタッチ プログラムをバックグラウンドで動かし続けるには,nohupよ りもスクリーンのデタッチ(C-j d)の⽅方がよい デタッチだと,「予想以上に実⾏行行に時間くってるけどもう帰ら ないといけない」的な時に途中でバックグラウンドジョブに変 更できるl  API制限 l  来年の3⽉月からかなり制限がキツくなるらしい
    • Thank you.