スクレイピングでゲットした気象庁のAMeDASデータを計算してIFを使って判定してみた

Python初心者がやっと条件分岐をやってみることにしました。

気象庁の発表している気象データをTwitterに吐き出すようにしてみた(怒られないように?) – happyman web

ただ吐き出すだけではあまりに能が無いので、何か計算してみることにしました。

スクレイピングした気象庁のアメダス(AMeDAS)のデータで計算したときのメモ。 – happyman web

ある程度計算は出来るようになった

1.計算結果を使って判定して結果を吐くようにしてみる。

引き算した結果で、上がった下がったという判定をしてみる。

引き算して、マイナスの結果が出たら「下がった」、引き算してプラスの結果が出たら「上がった」、変化無しなら変化無しという判定をしてやる。

計算した絶対値は数字なのでまた文字列str()にして吐き出せるようにした。なんか無駄なことをしている様な気がしてはいる。

if float(temph) < 0: #計算結果がマイナス
    result = "1時間で"+str(tm)+"℃下がりました"

elif float(temph) > 0: #計算結果がプラス
    result = "1時間で"+str(tm)+"℃上がりました"

else:
    result = "1時間で気温の変化はありません。"

これでIFの条件分岐の基礎は理解できただろうか?

2.今回やったことのまとめ

Twitterに吐き出せるようにしました。

from requests_html import HTMLSession
import os
import time
from my_module import haptweepyapi
from pprint import pprint

# 観測データのアドレス(例:名古屋)
url = "https://www.jma.go.jp/bosai/amedas/#amdno=51106&area_type=offices&area_code=230000&format=table1h&elems=40000"

# GETメソッドでリクエストを送信
session = HTMLSession()
r = session.get(url)

# ブラウザエンジンでHTMLをレンダリング
# 表の描画に若干時間がかかるためsleepで待機時間を設定
r.html.render(sleep=3)

# データを抽出
cell_data = r.html.find("table.amd-table-seriestable td")

# 先頭のデータを変数に格納し空のセルを除去
output_data = []
for item in cell_data:
if item.text:
  output_data.append(item.text)
  if len(output_data) >= 5:
    break

# 整形して出力
temph = ("%.1f" %(float(output_data[2])-float(output_data[4])))
tm = abs(float(temph))

if float(temph) < 0:
    result = "1時間で"+str(tm)+"℃下がりました"
elif float(temph) > 0:
    result = "1時間で"+str(tm)+"℃上がりました"
else:
    result = "1時間で気温の変化はありません。"

tempr = ('気象庁によると名古屋{day} {time} の気温は{temp}℃です。{time2} の気温は{temp2}℃でした。'.format(day=output_data[0], time=output_data[1], temp=output_data[2],time2=output_data[3], temp2=output_data[4]))
jma = url

value = tempr +"\n"+ result +"\n"+ jma
print(value)

# ファイルから読み込んだ値をツイート
def CreateTweet(value):
    tweet = haptweepyapi.ClientInfo().create_tweet(text=value)
    return tweet

# 関数実行・結果出力
pprint(CreateTweet(value))

こんな感じにしました。

でも・・・午前1時のツイートがこれでは出来ない。