【115日目】DjangoでTweepyを動かしてみる
本日はDjangoでTweepyを簡単に動作させてみたいと思います。
本来はモデル等に取得したデータを蓄積させていきたいところですが、まずは動かせるかどうかの確認です。
簡単な動作確認なので、関数ベースで試していきたいと思います。
tweepyを使うための下準備などは以下の記事を参照してみてください。
全体の構成は以下です。
tweepy.pyを作成してtweepyを活用する関数「get_tweets」を定義
views.pyにビューを定義し、そこで「get_tweets」を呼び出す
いつも通りパスとテンプレートを設定
まずtweepyを使った関数を定義してみます。apiキー等もベタ打ちしてしまってますが、ここは後日.envファイルに入れられないか試すつもりです。
[tweepy.py]
import tweepy
def get_tweets(search, num):
api_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
api_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
access_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
access_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
auth = tweepy.OAuth1UserHandler(api_key, api_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
# API連携してツイート情報を収集
tweets = tweepy.Cursor(api.search_30_day, label='test1', query=search,).items(num)
# 取得した情報から必要なものをリストに格納
tweets = list(tweets)
tweet_data = []
for tweet in tweets:
tweet_data.append([tweet.id, tweet.user.id, tweet.user.name, tweet.text, tweet.favorite_count, tweet.retweet_count, tweet.created_at])
return tweet_data
次に、この関数を呼び出すビューを定義します。
検索するキーワード等もここで渡します。
[views.py]
from django.shortcuts import render # 最初これだけ
from . import tweepy
# 一旦ツイートIDとテキストだけをダイレクトに表示してみる
def TwitterAnalysis(request):
searchkey = "めざましテレビ" # 検索ワード
location = "point_radius:[140 36 30km]" # 東京の緯度経度を指定して半径30km以内でのツイートを取得
search ="{0} {1}".format(searchkey, location)
item_num = 3 # 一度に取得するツイート数(最大100)
# get_tweets関数を呼び出す
tweet_data = tweepy.get_tweets(search, item_num)
# テンプレートにデータを渡す
ctxt = {
'tweet_id': tweet_data[0][0],
'tweet_text': tweet_data[0][3],
}
return render(request, "tweepy_test/twitter_analysis.html", ctxt)
次はパスの設定です。関数ベースなのでas_view()は不要です。トップページにアクセスがあれば、TwitterAnalysisを返します。
[urls.py]
from django.urls import path
from. import views
ulrpatterns = [
path("", views.TwitterAnalysis),
]
最後にテンプレートの設定です。ほんとに表示させるだけなので、ほぼ何も書いてません。
[twitter_analysis.html]
<p>{{ tweet_id }}</p>
<p>{{ tweet_text }}</p>
ブラウザを表示すると以下ようにツイート内容が表示されました(勝手に表示するの問題かもと思い、大部分を黒塗りしてます)。
うまくいくと結構感動するので、ぜひ試してみてください!
ここまでお読みいただきありがとうございました。
これまで修了したコース等
【YouTube_Django関係】
Pythonでウェブサービスを作ろう! 1
テンプレートをマスターしよう! 2
静的ファイルを配信しよう !3
本番公開しよう! 4
データベースと接続しよう! 5
ブログを作って学ぶモデル入門! 6
これが汎用ビューの力! 7
Djangoフォームを自由自在に操ろう! 8
djagoを最大限使って効率よくログインを作ろう! 9
ログイン完成!サインアップ & メール認証 10
データベースマイグレーション前編 15
データベースマイグレーション後編 16
【YouTube_Pandas関係】
3時間でマスター Pandas入門コース
Pandas20本ノック
【Paiza】
Aランクレベルアップメニュー 24/49問
データセット選択メニュー 12/17問
配列メニュー 64/64問
ループメニュー1 20/20問
ループメニュー2 12/20問
条件分岐メニュー 25/25問
二重ループメニュー 19/19問
配列活用メニュー 26/26問
文字列処理メニュー 30/30問
Bランクレベルアップメニュー 62/62問
Cランクレベルアップメニュー 30/30問
ランクB合格
ランクC合格
JavaScript体験篇 15/15講座
辞書(ディクショナリ)の基礎 8/8講座
【書籍/ブログ】
Django入門 | 初心者でも1時間でWebアプリ(Todoアプリ)を作成するコース
基礎からのMySQL
Web技術の基本
京大のPython教科書
Pythonデータベースプログラミング
Pythonエンジニアファーストブック
【Progate】
Python Ⅰ~Ⅴ
Python アプリ版 コースⅠ~Ⅴ
SQL Ⅰ~ Ⅳ
SQL アプリ版 コースⅢ
HTML&CSS 初級編
【環境構築】
Python, VSCode, MySQL(MAMP), Git / GitHub, HEROKU, anaconda, jupyter lab