【Pythonサンプルコード】tweepyでURLが含まれるツイートを抽出する:expanded_url
ツイートに含まれるURLは省略されている
ツイッターAPIを扱う代表的なPythonモジュールとして「tweepy」があり、tweepyを使うことで簡単にツイートのデータを検索したり、ツイート内容を抽出したりできます。
これを利用することで「ツイートに含まれるURL」を集めることも簡単にできるかと思えば、残念ながらツイートに含まれるURLはこんな感じに短縮されておりそのままでは使えません。
そこで今回は、tweepyを使って「ツイートに含まれるURLをそのまま抽出する方法」をご紹介したいと思います。
準備
ツイッターAPI Keyの取得
2019年現在、ツイッターAPIを使用するためにはAPI Keyが必要となっています。
API Keyの取得については以下の記事をご覧ください。
karupoimou.hatenablog.com
取得したいのは『expanded_url』
ツイートに含まれる「短縮されてないURL」がどこにあるのかと言えば『expanded_url』です。
tweepy.models.Statusの中身について参考になるサイト
Tweepyで取得できるStatusの中身(つぶやき)データ一覧 - 仮想サーファーの日常
Tweepyのstatusリストで何が取れるのかわからなかったので、取り出してみた - Qiita
『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()
取得例
解説
for status in api.search(q=q_word, lang='ja', result_type='recent'):
- まずtweepyの「api.search」を使って条件にヒットするツイートをStatusオブジェクトとして取得しています
「api.search」については以下を参照
- 次に
if status.entities["urls"] != []:
の部分で、URLが含まれているツイートだけ抽出しています
- 最後に
status.entities["urls"][0]["expanded_url"]
の部分で「expanded_url」を抜き出しています。