これをマスター
PythonでGoogle翻訳ライブラリーを使ってみよう
マスター Twitter APIでツィート取得
今日の課題
import tweepy as tw auth = tw.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tw.API(auth, wait_on_rate_limit=True) search_words = "渋谷+カフェ" tweets = tw.Cursor(api.search, q=search_words, lang="ja",count=100).items()
「渋谷」「カフェ」のツィートを検索してみました
少し長めのコードになりますがあっと言う間に
数千行のデータが取れます
結果はこんな感じ
A | B | C | D | E | F | G | |
1 | created_at | id | id_str | text | truncated | source | |
2 | 0 | Sat Aug 29 15:59:36 +0000 2020 | 1299700000000000000 | 1299738478977000000 | RT @bmax0306: 【交換・譲渡】妖狐×僕ss いぬぼくカフェ 藤原ここあ\n\n【譲】1枚目\n通常柄 前半後半 33種\n\n【求】2枚目 💖>💙>⭐️>無印\n💙渋谷限定ランチョン2種\n\n💖→当方7:1まで可能\n💙→5:1、⭐️→4:1、無印→1:1\n\n仮約束◎\nDMからのご… | FALSE | Twitter for Android |
3 | 1 | Sat Aug 29 15:56:35 +0000 2020 | 1299700000000000000 | 1299700000000000000 | RT @tsank85: いぬぼくカフェ 交換\n\n譲)写真の物\n\n求)渋谷後半限定コースター\n\n当方凜々蝶が最推しです。\n現状、某ウイルスの影響で東京へ行く事が出来ないのでとても求めております。\n難しいのは承知しておりますが、複数提供可能ですのでご検討頂けますと幸いです。\n検索… | FALSE | Twitter Web App |
4 | 2 | Sat Aug 29 15:54:58 +0000 2020 | 1299700000000000000 | 1299700000000000000 | @ngntrtr カフェでお世話になってる…(゚ω゚)\n\n…Σ(゚Д゚)\n\n…(≧▽≦)\n\nという事は、カフェと一緒で大阪・名古屋・仙台・札幌あたりで開催する可能性もゼロじゃないという事ですね☆(*´▽`*)\n渋谷は大盛況になるは… https://t.co/tmO21MXA8G | TRUE | Twitter for Android |
5 | 3 | Sat Aug 29 15:51:41 +0000 2020 | 1299700000000000000 | 1299700000000000000 | RT @princesscafe333: 【#多数欠 × プリンセスカフェ】\n『多数欠アニメ化プロジェクト Thanks Store in 渋谷マルイ』の開催を記念して、渋谷マルイ1Fにて、9/4~コラボ開催決定!\n\nコラボドリンクのテイクアウトやオリジナルグッズをご用意致しま… | FALSE | Twitter for iPhone |
6 | 4 | Sat Aug 29 15:48:54 +0000 2020 | 1299700000000000000 | 1299700000000000000 | RT @onoyax: 渋谷のミヤシタパーク、パンとエスプレッソとまちあわせにて、大人のカフェショコラ。18時から。\nチョコアイス、フォンダンショコラ、コーヒーグラニテ、ムー(食パン)のサクサク、ムーのティラミス、パールチョコ。苦味とサクサクがちょうどよい。底のパールチョコ、か… | FALSE | Twitter for iPhone |
7 | |||||||
8 | |||||||
9 | |||||||
10 |
created_atカラムにツィートの時間が
textのカラムにツィートの内容が取れているのが確認できます
コードを詳しく見ていきましょう
詳しく
ライブラリのインストール
tweepyというライブラリーを使います
インストールは
pip install tweepy
これで完了です
PIPの使い方は<i class=”far fa-hand-point-down”></i>をご覧になってみてください
ライブラリ等の読み込み
スペース都合上サンプルには記載しておりませんが
Twitter APIを使うには登録が必要になります
https://developer.twitter.com/en/docs/tweets/search/overview
登録ページが英語なので若干ハードルが高いですが
スタンダードプランでは(過去7日分の制限はありますが)
コストはかかりません
登録するとのキー、シークレット、トークン、トークンシークレットが貰えますので 無くさないように保存しておきましょう
consumer_key= '***' consumer_secret= '***' access_token= '***' access_token_secret= '***'加えてをコードの先頭に入れます 全体ではこんな感じになります
import tweepy as tw import pandas as pd #--取得したキーを入れて下さい--# consumer_key= '***' consumer_secret= '***' access_token= '***' access_token_secret= '***' auth = tw.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tw.API(auth, wait_on_rate_limit=True) search_words = "渋谷+カフェ" tweets = tw.Cursor(api.search, q=search_words, lang="ja",count=100).items() toJson = [tweet._json for tweet in tweets] df = pd.io.json.json_normalize(toJson) df.to_excel('tweet.xlsx')
ちょっと長めのコードですが順に見ていきましょう
import tweepy as tw import pandas as pd
tweetpyとpandasのライブラリを読み込んでいます
auth = tw.OAuthHandler(consumer_key, consumer_secret) auth.set_access_token(access_token, access_token_secret) api = tw.API(auth, wait_on_rate_limit=True)
呪文のような3行ですがこのまま使えます
何をやってるかと言うと
Twitterに登録したキーやトークンを使って
APIと認証を行っています
search_words = "渋谷+カフェ" tweets = tw.Cursor(api.search, q=search_words, lang="ja",count=100).items()
ここでは実際にTwitter APIを呼び出して
「渋谷」「カフェ」のツィートを検索しています
search_words =”渋谷+カフェ”
の部分を探したいキーワードに変更すると
別の検索が出来ます
tweets = tw.Cursor(api.search, q=search_words, lang=”ja”,count=100).items()
このコードでは、APIの種類、検索ワード、言語(ja 日本語)、結果の件数を指定しています (今回100件だけ取得しました)
結果はtweetsにItemIterator形式で返ってきます
このままでは扱いずらいので
使い慣れているPandasのDataFrameに変換していきます
toJson = [tweet._json for tweet in tweets] df = pd.io.json.json_normalize(toJson) df.to_excel('tweet.xlsx')
tweepyのItemIteratorはlistのような形式で検索結果が保存されているので toJson = [tweet._json for tweet in tweets] forループで一件づつに分解して、検索結果がjson形式で治めてある _json カラムを取得します df = pd.io.json.json_normalize(toJson) json形式をPandasのデータフレームに変換します df.to_excel('tweet.xlsx') 最後にExcelにエクスポートします
実践
エクスポートしたExcelで
どんなツィートがされているのかを調査していきます
textカラムで実際のツィートを確認出来ます
手作業で見て確認して行く事ももちろん大切ですが
データ量が膨大になって来たり
頻繁にチェックする場合などは
時間がかかってしまいます
昨今はこの作業を機械学習で行うのが流行です
AIにテキストを読み込ませて
単語ごとに分割 (ベクタライズ)して
頻繁に呟かれている言葉を分析したりします