MiracleJobLogo
エンジニアのエンジニアによるエンジニアのためのサイト
News 07/19 おすすめ情報に 『 【資格取得者速報】 Aさん 「 Microsoft Security, Compliance, and Identity Fundamentals」 』 を追加しました。
会員登録するとキャリア診断やサイトに参加することができます。
あなたにおすすめな技術情報、資格、仕事などをお知らせします。

無料会員登録


パスワードを忘れた場合
LINEで送る
MiracleJobBanaLeft1
MiracleJobBanaLeft2


pythonとLINEを用いて毎朝決まった時間に天気予報を即座に把握しよう!
profile-img
投稿者: Tomoyaさん
投稿日:2023/07/05 15:02
更新日:
like-img
分類
技術
テクノロジー
その他
キャリア
運用・保守 / テクニカルサポート / 構築 / 設計 / PL / PM / 技術営業 / コンサルティング
投稿内容
はじめに
皆さんは毎朝出かける前に天気予報を見ていますでしょうか。
身支度をしていて天気予報をじっくり見ている時間がない、目的地の天気予報だけでもいち早く知りたいと思う人も少なくないのではないでしょうか。

そんな中で今回私はpythonとラインを用いて、毎朝指定した時間に今日の天気予報を発信するプログラムを書いたので、そちらを紹介したいと思います!
初心者の方でも簡単にマネできるので是非やってみてください!

前提条件
・LINEを使える人
・LINE notify に登録している人(今回はこちらに天気予報を発信していきます。)
・pythonを実行できる環境が整っている
・今回はpythonのライブラリである「BeautifulSoup」、「requests」、「datetime」、「locale」の4つを用いるため、あらかじめインストール済みであること

コードの紹介
先に今回書いたコードを紹介します。
_______________________________________________________________________________________________________
from bs4 import BeautifulSoup
import requests
import datetime
import locale

## 日付取得 
locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
today_date = datetime.date.today()
today_date_format = "{0:%m月%d日}".format(today_date)
today_strftime = today_date.strftime('%a')

## 天気のページを取得
weather_url = "https://weather.yahoo.co.jp/weather/jp/13/4410.html"
response = requests.get(weather_url)
html = BeautifulSoup(response.text, "html.parser")
forecastcity = html.find_all("div", attrs={"class":"forecastCity"})[0]

## 今日の天気
today = forecastcity.find_all("div")[0]
today_weather = today.find_all("p", attrs ={"class" :  "pict"})[0].text.replace("\n","").replace(" ","")
today_high = today.find_all("li")[0].text
today_low = today.find_all("li")[1].text
today.find_all("td")
today_rain_06 = today.find_all("td")[4].text
today_rain_12 = today.find_all("td")[5].text
today_rain_18 = today.find_all("td")[6].text
today_rain_24 = today.find_all("td")[7].text

## 今日の天気のメッセージ
today_message="""
今日{}({})の天気は{}
・最高気温:{}
・最低気温:{}
【降水確率】
0-6時:{}、6-12時:{}、12-18時:{}、18-24時:{}
""".format(today_date_format, today_strftime, today_weather, today_high, today_low, today_rain_06, today_rain_12, today_rain_18, today_rain_24)

##LINEにメッセージを送る
token = "アクセストークン" #「アクセストークン」に発行したアクセストークンを入力する
####※アクセストークンの発行方法は以下のURLを参考にしてみてください
####https://firestorage.jp/business/line-notify/
url = "https://notify-api.line.me/api/notify"
auth = {"Authorization":"Bearer "+token}
content = {"message" : today_message}
requests.post(url, headers=auth, data=content)
_______________________________________________________________________________________________________

コードの説明
上記で紹介したコードの流れは以下になります。
①日付取得

②天気予報のページを取得

③今日の天気予報をスクレイピング

④スクレイピングした情報を定型文に当てはめる

⑤最後にLINEに作成した天気予報の文章を送る

①では日付の取得をしています。ここで取得した日付は④の定型文に当てはめていきます。
②今回はヤフー天気のページから情報をスクレイピングするため、まずはヤフー天気のページを取得します。
③実際に取得したい情報をスクレイピングしていきます。(ここでは、「今日の天気」、「最高気温」、「最低気温」、4つの時間帯の降水確率の計7つの情報を抽出しています。)
④③でスクレイピングした情報を定型文に当てはめていきます。
⑤今回送ろうとしているLINEのアカウントに連携させます。

pythonのプログラムの説明は以上になります。
ここから指定した時間に上記のプログラムを実行するには以下の3つがあります。(まだあるかもしれないですが。。)

<MacやLinuxを使っている人>
・cronコマンド使って設定する

<Windowsを使っている人>
・タスクスケジューラで設定する
・コマンドプロンプトでschtasksコマンドを使って設定する

上記の使用方法については調べてみてください!

まとめ
LINEとpythonを用いて自分の知りたい天気予報を即座に知る方法について説明しました。
pythonのプログラムについてはライブラリをインストールしたり、個人のアクセストークンを入力する以外は全て同じコードになってくるので、是非マネしてみてください!
また、現在はpythonがAI開発や業務効率化など、多くの場面で使われているので、この機会にpythonの勉強をしてみてはいかがでしょうか!?

補足
降水確率によって傘を持っていくか否かの情報も加えられると、より一目でわかりやすくなるかもしれないですね!

参考URL

https://qiita.com/leomaro7/items/63dfd52fa9846c2b7b23

https://qiita.com/saira/items/76a5538a6b2556f6b339

https://maasaablog.com/development/backend/python/737/

コメント


MiracleJobBanaRight1
MiracleJobBanaRight2
MiracleJobBanaRight3