天気の情報をスクレイピングして表示したい!と考えた筆者
しかし、スクレイピングしたとて一つのページでしか表示ができず、残念に思っていた今日この頃
ある日、全てのページに共通させてカテゴリ一覧を表示するという神機能を知った
URL: https://blog.narito.ninja/detail/150
これを参考に作ってみた
Blogのアプリがあったので、その下にcontext_processors.pyを作成し、中身を書き書き
def common_weather(request):
context = {}
url_forecast = 'https://tenki.jp/forecast/3/16/4410/13208/'
fdict = scrape_weather(url_forecast)
forecast = fdict["today"]["forecasts"][0]
context["weather"] = "天気: "+forecast["weather"]
context["temp_high"] = "最高気温: "+forecast["high_temp"]
context["temp_low"] = "最低気温: "+forecast["low_temp"]
context["rain_probability"] = "降水確率: "
context["rain_probability_0006"] = "00-06: "+forecast["rain_probability"]['00-06']
context["rain_probability_0612"] = "06-12: "+ forecast["rain_probability"]['06-12']
context["rain_probability_1218"] = "12-18: "+ forecast["rain_probability"]['12-18']
context["rain_probability_1824"] = "18-24: "+ forecast["rain_probability"]['18-24']
return context
天気の情報はtenki.jpからスクレイピングしている
scrape_weatherの中身は本題ではないのでスルー
そしてこの関数をsettings.pyに追加した
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['templates'],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
'blog.context_processors.common',
'blog.context_processors.common_weather',
],
},
},
]
実際に表示してみると。。。
できた!!!