SlideShare a Scribd company logo
1 of 18
Download to read offline
Twitterでのデータ収集
    2012/9/21
    @pika_shi
python-twitter

l    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-oauth2


l    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 # 返信先のユーザ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
ツイート情報を取得(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
...
FurusatoOuen
happy_nina
・・・
Foomin_110
reigaaaaan
ツイートを投稿
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.

More Related Content

What's hot

今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツールaoshiman
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Atsuo Ishimoto
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめYukitaka Uchikoshi
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpYoshifumi Yamaguchi
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティAtsuo Ishimoto
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールAtsuo Ishimoto
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabYutaka Kobayshi
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイドEtsuji Nakai
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Kir Chou
 
Introduce for sphinx-users-jp
Introduce for sphinx-users-jpIntroduce for sphinx-users-jp
Introduce for sphinx-users-jpGo Yamada
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3Atsushi Odagiri
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoKei IWASAKI
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画Kazufumi Ohkawa
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Atsuo Ishimoto
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来Atsushi Odagiri
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolsAtsushi Odagiri
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015SaitoTsutomu
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botdcubeio
 

What's hot (20)

今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
今年使ってみて良かった、Pythonモジュール、パッケージ、ツール
 
Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築Pelicanによる www.python.jpの構築
Pelicanによる www.python.jpの構築
 
Python twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめPython twitterとtkinterのことはじめ
Python twitterとtkinterのことはじめ
 
python.jpの使い方
python.jpの使い方python.jpの使い方
python.jpの使い方
 
Pythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjpPythonを取り巻く開発環境 #pyconjp
Pythonを取り巻く開発環境 #pyconjp
 
tse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティtse - Pythonによるテキスト整形ユーティリティ
tse - Pythonによるテキスト整形ユーティリティ
 
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツールPyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
PyCon JP 2012 hands-on セッション/ FlaskによるWebアプリケーションの実装とプログラミングツール
 
Apilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlabApilecture for 2014/02/22 at shannonlab
Apilecture for 2014/02/22 at shannonlab
 
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
ソフトウェアエンジニアのための「機械学習理論」入門・ハンズオン演習ガイド
 
Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!Python パッケージの影響を歴史から理解してみよう!
Python パッケージの影響を歴史から理解してみよう!
 
Introduce for sphinx-users-jp
Introduce for sphinx-users-jpIntroduce for sphinx-users-jp
Introduce for sphinx-users-jp
 
BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3BPStudy#54 そろそろPython3
BPStudy#54 そろそろPython3
 
Pelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 TokyoPelican の紹介 / World Plone Day 2017 Tokyo
Pelican の紹介 / World Plone Day 2017 Tokyo
 
プログラミング入門 Python超入門編
プログラミング入門 Python超入門編プログラミング入門 Python超入門編
プログラミング入門 Python超入門編
 
pythonでオフィス快適化計画
pythonでオフィス快適化計画pythonでオフィス快適化計画
pythonでオフィス快適化計画
 
Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料Python 3.6 リリースパーティー 発表資料
Python 3.6 リリースパーティー 発表資料
 
パッケージングの今と未来
パッケージングの今と未来パッケージングの今と未来
パッケージングの今と未来
 
eggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptoolseggとはなんだったのか 栄光のsetuptools
eggとはなんだったのか 栄光のsetuptools
 
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
 
Python × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack botPython × Herokuで作る 雑談slack bot
Python × Herokuで作る 雑談slack bot
 

Viewers also liked

Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Takami Sato
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門Hironori Sekine
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Etsuji Nakai
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境Hisao Soyama
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjpShinichi Nakagawa
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門Atsushi Hayakawa
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル敦志 金谷
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングYuichi Ito
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルSatoshi Yamada
 
Requestsで始める5分前帰社
Requestsで始める5分前帰社Requestsで始める5分前帰社
Requestsで始める5分前帰社Satoshi Yamada
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Hironori Sekine
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Tatsuya Tojima
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門Hironori Sekine
 
実践で学ぶネットワーク分析
実践で学ぶネットワーク分析実践で学ぶネットワーク分析
実践で学ぶネットワーク分析Mitsunori Sato
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Hiroko Onari
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析Shugo Maeda
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門Keiichiro Ono
 

Viewers also liked (20)

Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門Scikit learnで学ぶ機械学習入門
Scikit learnで学ぶ機械学習入門
 
PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門PythonによるWebスクレイピング入門
PythonによるWebスクレイピング入門
 
Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編Python 機械学習プログラミング データ分析ライブラリー解説編
Python 機械学習プログラミング データ分析ライブラリー解説編
 
Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析Pythonで簡単ネットワーク分析
Pythonで簡単ネットワーク分析
 
10分でわかるPythonの開発環境
10分でわかるPythonの開発環境10分でわかるPythonの開発環境
10分でわかるPythonの開発環境
 
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
野球Hack!~Pythonを用いたデータ分析と可視化 #pyconjp
 
RとPythonによるデータ解析入門
RとPythonによるデータ解析入門RとPythonによるデータ解析入門
RとPythonによるデータ解析入門
 
scikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアルscikit-learnを用いた機械学習チュートリアル
scikit-learnを用いた機械学習チュートリアル
 
Gensim
GensimGensim
Gensim
 
Python入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニングPython入門 : 4日間コース社内トレーニング
Python入門 : 4日間コース社内トレーニング
 
DBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキルDBエンジニアに必要だったPythonのスキル
DBエンジニアに必要だったPythonのスキル
 
Requestsで始める5分前帰社
Requestsで始める5分前帰社Requestsで始める5分前帰社
Requestsで始める5分前帰社
 
Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編- Pythonによるwebアプリケーション入門 - Django編-
Pythonによるwebアプリケーション入門 - Django編-
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門Python による 「スクレイピング & 自然言語処理」入門
Python による 「スクレイピング & 自然言語処理」入門
 
続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門続Pythonによるwebスクレイピング入門
続Pythonによるwebスクレイピング入門
 
実践で学ぶネットワーク分析
実践で学ぶネットワーク分析実践で学ぶネットワーク分析
実践で学ぶネットワーク分析
 
Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析Rでソーシャルネットワーク分析
Rでソーシャルネットワーク分析
 
Rubyによるデータ解析
Rubyによるデータ解析Rubyによるデータ解析
Rubyによるデータ解析
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
 

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

Twitterのデータを取得する準備
Twitterのデータを取得する準備Twitterのデータを取得する準備
Twitterのデータを取得する準備Takeshi Arabiki
 
Google App EngineでTwitterアプリを作ろう
Google App EngineでTwitterアプリを作ろうGoogle App EngineでTwitterアプリを作ろう
Google App EngineでTwitterアプリを作ろうkenji4569
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hackyut148atgmaildotcom
 
StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 kaiba d
 
Google App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなことGoogle App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなことa-know
 
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2脇村 隆
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampMasahiro NAKAYAMA
 
Twitter4jハンズオン 5/1 #twtr_hack
Twitter4jハンズオン 5/1 #twtr_hackTwitter4jハンズオン 5/1 #twtr_hack
Twitter4jハンズオン 5/1 #twtr_hackYusuke Yamamoto
 
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについてtototti
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Shinya Nakajima
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hacki7a
 
FIWARE IoTデバイスを保護する方法
FIWARE IoTデバイスを保護する方法FIWARE IoTデバイスを保護する方法
FIWARE IoTデバイスを保護する方法fisuda
 
SDUG Tokyo Meetup#7 About ReleaseNote
SDUG Tokyo Meetup#7 About ReleaseNoteSDUG Tokyo Meetup#7 About ReleaseNote
SDUG Tokyo Meetup#7 About ReleaseNoteTakahiro Yonei
 
API提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijpAPI提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijpTatsuo Kudo
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!一希 大田
 
KituraとサーバーサイドSwift
KituraとサーバーサイドSwiftKituraとサーバーサイドSwift
KituraとサーバーサイドSwiftYUSUKE MORIZUMI
 
安全なTwitterクライアントへの試行錯誤
安全なTwitterクライアントへの試行錯誤安全なTwitterクライアントへの試行錯誤
安全なTwitterクライアントへの試行錯誤Masahiro Kawato
 
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみたBMXUG
 
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみたK Kimura
 

Similar to python-twitterを用いたTwitterデータ収集 (20)

Twitterのデータを取得する準備
Twitterのデータを取得する準備Twitterのデータを取得する準備
Twitterのデータを取得する準備
 
Google App EngineでTwitterアプリを作ろう
Google App EngineでTwitterアプリを作ろうGoogle App EngineでTwitterアプリを作ろう
Google App EngineでTwitterアプリを作ろう
 
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
配布用Dotcloudによるすぐ始めるtwitterwebアプリ開発#twtr hack
 
StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介 StreamingAPIを使用したTwitter Bot @waketi の紹介
StreamingAPIを使用したTwitter Bot @waketi の紹介
 
Google App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなことGoogle App Engineでできる、あんなこと/こんなこと
Google App Engineでできる、あんなこと/こんなこと
 
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
第四回Web apiを使ってwebアプリケーションを作る勉強会テキスト2
 
クラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccampクラウドではじめるリアルタイムデータ分析 #seccamp
クラウドではじめるリアルタイムデータ分析 #seccamp
 
Twitter4jハンズオン 5/1 #twtr_hack
Twitter4jハンズオン 5/1 #twtr_hackTwitter4jハンズオン 5/1 #twtr_hack
Twitter4jハンズオン 5/1 #twtr_hack
 
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
仙台 iOS開発者勉強会 2011/11/03 - TwitterAPIについて
 
Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)Visual Studio App Centerで始めるCI/CD(iOS)
Visual Studio App Centerで始めるCI/CD(iOS)
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
 
Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
FIWARE IoTデバイスを保護する方法
FIWARE IoTデバイスを保護する方法FIWARE IoTデバイスを保護する方法
FIWARE IoTデバイスを保護する方法
 
SDUG Tokyo Meetup#7 About ReleaseNote
SDUG Tokyo Meetup#7 About ReleaseNoteSDUG Tokyo Meetup#7 About ReleaseNote
SDUG Tokyo Meetup#7 About ReleaseNote
 
API提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijpAPI提供におけるOAuthの役割 #apijp
API提供におけるOAuthの役割 #apijp
 
Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!Azure Static Web Apps を試してみた!
Azure Static Web Apps を試してみた!
 
KituraとサーバーサイドSwift
KituraとサーバーサイドSwiftKituraとサーバーサイドSwift
KituraとサーバーサイドSwift
 
安全なTwitterクライアントへの試行錯誤
安全なTwitterクライアントへの試行錯誤安全なTwitterクライアントへの試行錯誤
安全なTwitterクライアントへの試行錯誤
 
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger Composer でブロックチェーンアプリを動かしてみた
 
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
(きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた
 

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

  • 1. Twitterでのデータ収集 2012/9/21 @pika_shi
  • 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
  • 8. ユーザのツイート⼀一覧を取得 GetUserTimeline(user) >>> timeline = api.GetUserTimeline('pika_shi') >>> for tweet in timeline: ... print tweet.text ... @petitviolet 了解^^ @petitviolet いつくらいに確定しそうか聞いてみるわ! 増えること⾃自体はお店 ...
  • 9. ユーザのタイムラインを取得 GetFriendsTimeline(user) ※要認証 >>> timeline = api.GetFriendsTimeline('pika_shi’) >>> for tweet in timeline: ... print tweet.text ... 「成果をあげるのは才能ではなく、習慣だ。」 実験のレポートは⼀一旦寝てから始めよう※再徹夜ふらぐ乱⽴立立中 ・・・ いやー、晴天って良いなぁ マスオデックス
  • 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 !
  • 14. ユーザのフォロワーを取得 GetFollowers() ※なぜか要認証 >>> followers = api.GetFollowers() >>> for follower in followers: ... print follower.screen_name ... FurusatoOuen happy_nina ・・・ Foomin_110 reigaaaaan
  • 15. ツイートを投稿 PostUpdate(tweet) ※要認証 >>> postmsg = '疲れた' >>> api.PostUpdate(postmsg.decode("utf-8"))
  • 16. データ収集時に気を付けること l  タイムアウトの設定 タイムアウトを設定しておかないと,何らかの原因でデータが 取得できない時にプログラムが⽌止まる import socket socket.setdefaulttimeout(30) # 引数は秒数 l  executemany (sqlite3) ⼤大量にデータを収集する際は,データごとにinsertするより, ⼀一気にinsertできるexecutemanyを使うとよい
  • 17. データ収集時に気を付けること l  デタッチ プログラムをバックグラウンドで動かし続けるには,nohupよ りもスクリーンのデタッチ(C-j d)の⽅方がよい デタッチだと,「予想以上に実⾏行行に時間くってるけどもう帰ら ないといけない」的な時に途中でバックグラウンドジョブに変 更できる l  API制限 l  来年の3⽉月からかなり制限がキツくなるらしい