6065879 ランダム
 HOME | DIARY | PROFILE 【フォローする】 【ログイン】

GMの抵抗ワショーイ

2020.09.15
XML
カテゴリ:御伽原江良
Twitter botを開発したり特定の分野のトレンドを分析するためにTwitterの分析をしたい、そんな人向けの記事。

APIを介して色々と遊んでみたい人向け。

Twitter APIの詳細は公式サイトにも書いてありますが、ざっくり言うとアクセスすればデータがもらえる(GET) or データを送信できる(POST)受付窓口だと思ってもらえると。


(0) Twitter APIを申請せずに遊びたい!

APIの申請なんて待ってられねぇ!って人向け。

syncerさんのところでAPIの仕様含めて色々紹介されているので、まずは試してみるのもあり。



↓実行結果例






APIを介して作業をする場合、一番注意すべき点は3200件制限のこと。

無料のTwitterAPIを介して行うと過去3200件/人までしか遡れないことが多いです。

(検索系のAPI除く)

上限を超えたい場合は従量制課金が必要になってくることもあります。

取得したい対象のデータがどの程度の量なのか見積もることを必ずしておきましょう。

ネット上に転がっている多くのコードは3200件上限を想定されていない設計になっているので注意。

ネット上に転がっているコードで実運用を行う場合は定期的に実行する(cron)設計+データ量推定+重複排除の設計が必須。

APIの呼び出し数制限に引っかかることもあるので注意。

あと、鍵垢に対しては色々と実行制限がかかりがちな点も注意。




(1) Twitter APIの申請

これが一番面倒。

というか、検索汚染されすぎてTwitter開発APIキーを取得するページにたどり着くのも面倒。

Twitter API Developer Portal
↑ここで必要なAPIキーやシークレットキーが手に入る

ブックマークしような?

ここでのアクセスキーとトークンとの取得する手順が厄介で、審査用の文章を考えないといけない。

英語で答える必要があるが、そこはGoogle翻訳でなんとかなります。

問題は内容。かなり具体的に目的や用途・実装設計を答えないとダメ。

[参考] twitterのAPI審査期間は3日で通る?合格例文でも3回落ちた1つの原因【完全攻略】

※例文そのままコピペしても落ちる可能性あるので注意

※実装コードの提出は「仮の設計」で大丈夫です。「こんな感じでプログラミングする予定ですよ、でも最後に実行させるコードは変わるかもね」ぐらいの心構えで。

※設計変更したからってキレ散らかされることはありません。ご安心ください。

※要は「本当にプログラムに見識あるのか?」を試されているものだと思ってもらえると。



APIの審査は余裕を持って行いましょう。

というのも、リジェクトされる回数や内容次第では永久に審査が通らなくなる可能性があるからです。

リジェクトされたときに
「Failure to provide the necessary information will result in the rejection of your application.」のような文章が届いてしまった場合、「今度の申請内容が駄目だったら、API使わせませんよ」という警告です。

例文そのままに書いても審査を弾かれる可能性があるため、何に使うかなどの目的をはっきりさせてから送りましょう。
10年前の書籍だとかなり審査緩いよみたいに書かれていることがあるので、なるべくここ1年~半年以内の記事を参考にしましょう
アプリケーションの説明が不十分だとすぐにリジェクトされますし、見通しがないと判断されればAPI申請窓口が凍結されます。注意。

出来立てのアカウントで申請してもリジェクトされる可能性は高いので、ある程度アカウント作成も早めにしておきましょう。



(2) 実際に使ってみる

大体は以下構文を真似します。

pythonの場合はtweepyを使うのがベスト。

pip install tweepy


大体なんでも入ってる。

サンプル構文は以下。

#ツイートを取得

import tweepy

# 取得した各種キーを格納---------------------------------------------
consumer_key ="取得したconsumer key"
consumer_secret ="取得したconsumer secret"
access_token="取得したaccess token"
access_token_secret ="取得したaccess token secret"

# Twitterオブジェクトの生成
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
#-------------------------------------------------------------------

#ツイートを投稿
Account = "ユーザーID" #取得したいユーザーのユーザーIDを代入
tweets = api.user_timeline(Account, count=200, page=1)
num = 1 #ツイート数を計算するための変数
for tweet in tweets:
print('twid : ', tweet.id) # tweetのID
print('user : ', tweet.user.screen_name) # ユーザー名
print('date : ', tweet.created_at) # 呟いた日時
print(tweet.text) # ツイート内容
print('favo : ', tweet.favorite_count) # ツイートのいいね数
print('retw : ', tweet.retweet_count) # ツイートのリツイート数
print('ツイート数 : ', num) # ツイート数
print('='*80) # =を80個表示
num += 1 # ツイート数を計算


[引用元]Twitter APIで遊んでみた ~2. ツイートの投稿と取得~(Tech Lab)

Twitterのbotや情報収集を設計する場合、PHPも覚えておくといいかも。

後はコーディングして情報を収集するだけ。

他にもフォロー・フォロワー情報を取得なんてことも可能。
取得した情報を元にアクションを行う時に便利。

Python Tweepyを利用して、Twitter APIを使ったデータ収集方法を初心者向けに徹底解説してみた

軽く触るならこの手法がおすすめですが、3200件制限がかなり厳しいので注意。

メリット:
botや自動フォローなどは認証が必要のためTwitterAPIが必要
得られる情報量はかなり多い。

デメリット:
大量検索には向いてない


Twitterのbotだと、最近なら機械学習を活用して高度なことができるかも。
[参考]その2.TLから学ぶTwitterのbotを作った話。(マルコフ連鎖でツイートの文章を自動作成してツイートするbot)

(3) やっぱりAPI介したくない

APIを介さない場合はTwintの方が便利。

Twintの使い方例

・エゴサの手間を省きたい
・TwitterのAPI審査が面倒だけどスクレイピングしたい
・特定のワードでツイートがあったらDiscordへ投稿させたい

などのケースで便利。
エゴサなどの場合はcrontabでジョブ化しておくといいですね。
最近だとGitHubActionsもいいかも?<




(4) その他

selenium使えば視認できる情報の大抵は取得できます。

公式TwitterWEBを使ってスクロールする分にはメモリや各種制限などの上限に達しない限り無限に辿れるので。

[参考]SeleniumでTwitterをスクレイピングする【Python】
[参考]Twitterにプログラムで自動ログインする【Python + Selenium】
[参考]【Python】seleniumでWebElementからhtmlを取得する

ソースコードが欲しい時はとりあえず
element.get_attribute('innerHTML')
と書いとけばなんとかなる。



※seleniumを活用する場合、ブラウザのセッション等を共有しといたほうがいいかも。不正アクセスと間違われないようにするためにも。




その他


ただ単に自動化することが目的であればIFTTTも便利。
何かのSNSアカウントやメディアアカウントをトリガーに他アカウントに動作をさせるタイプの作業であればこれで十分です。
設定も視覚的にわかりやすい部類なので、一度試してみると良いかと。
個人的にはDiscordとの連携がとても便利。(要管理者権限)




他にも取得できそうな情報をまとめると
・全ツイート(検索含む)
・全画像
・フォロー/フォロワーリスト
・お気に入り(ふぁぼ)リスト
・プロフィールなどの基礎情報

大体この辺り。

Twitterを活用した情報収集は結構便利なので皆様も試してみてください。

[参考]PythonでWeb APIを叩く

   ww
 ,,#´ω`#,,
 #´・_・`#ノシ
 #´・ρ・`#ノシ
 #´・▽・`#ノシ
 #´・w・`#ノシ
 #´・ω・`#ノシ
 #´・∀・`#ノシ
 #´・Д・`#ノシ
 #´・-・`#ノシ
 #´・ε・`#ノシ
 #´・ヮ・`#ノシ
 #´・⊇・`#ノシ
..[..===..]
 |ノシショボテン|
 |_\3500_|
Twitter API Developer Portal
↑ここで必要なAPIキーやシークレットキーが手に入る






Last updated  2021.04.10 20:46:22
コメント(0) | コメントを書く



© Rakuten Group, Inc.