なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

【Pythonサンプルコード】tweepyでURLが含まれるツイートを抽出する:expanded_url

ツイートに含まれるURLは省略されている

ツイッターAPIを扱う代表的なPythonモジュールとして「tweepy」があり、tweepyを使うことで簡単にツイートのデータを検索したり、ツイート内容を抽出したりできます。

これを利用することで「ツイートに含まれるURL」を集めることも簡単にできるかと思えば、残念ながらツイートに含まれるURLはこんな感じに短縮されておりそのままでは使えません。


f:id:karupoimou:20190906194530p:plain


そこで今回は、tweepyを使って「ツイートに含まれるURLをそのまま抽出する方法」をご紹介したいと思います。

準備

ツイッターAPI Keyの取得

2019年現在、ツイッターAPIを使用するためにはAPI Keyが必要となっています。
API Keyの取得については以下の記事をご覧ください。
karupoimou.hatenablog.com

取得したいのは『expanded_url』

ツイートに含まれる「短縮されてないURL」がどこにあるのかと言えば『expanded_url』です。

『expanded_url』を抽出するサンプルコード

import tweepy

#keyの設定
CONSUMER_KEY = 'XXXXXXXXXXXXXXXXXXX'
CONSUMER_SECRET =  'XXXXXXXXXXXXXXXXXXX'
#OAuthHandlerクラスのインスタンスを作成
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN =  'XXXXXXXXXXXXXXXXXXX'
ACCESS_SECRET =  'XXXXXXXXXXXXXXXXXXX'
ACCESS_TOKEN_SECRET =  'XXXXXXXXXXXXXXXXXXX'
auth.set_access_token(ACCESS_TOKEN, ACCESS_SECRET)
# OAuth認証
api = tweepy.API(auth)

#検索クエリ
q_word="#ノベルアッププラス"

def get_tweepy():       
    for status in api.search(q=q_word, lang='ja', result_type='recent'):
        
        #URLが含まれるツイートだけ抽出
        if status.entities["urls"] != []:            
            #expanded_urlだけ抽出
            display(status.entities["urls"][0]["expanded_url"])
            
get_tweepy()

取得例

f:id:karupoimou:20190906195738p:plain
サンプル

解説

for status in api.search(q=q_word, lang='ja', result_type='recent'):

  1. まずtweepyの「api.search」を使って条件にヒットするツイートをStatusオブジェクトとして取得しています

api.search」については以下を参照


  1. 次に

if status.entities["urls"] != []:

の部分で、URLが含まれているツイートだけ抽出しています

  1. 最後に

status.entities["urls"][0]["expanded_url"]

の部分で「expanded_url」を抜き出しています。

参考にしたサイト

thinkami.hatenablog.com
qiita.com