파이썬으로 일기 예보 API를 두드려 데이터 취득 & DB 저장까지 해 보았다
소개
운영하고 있는 WEB 사이트에서, 매일의 도쿄의 날씨를 표시하려고 하게 되어, 우선은 무료의 API로 시험해 보았습니다.
이미지로서는 w w. 일본 치메 s. 이. jp 의 헤더를 이미지 받을 수 있으면 가깝다고 생각합니다.

하는 방법
유저로부터 액세스가 있을 때마다 API를 두드리고 있으면 힘들었기 때문에, 하루 1회 Python으로 데이터를 취득해 DB에 보존, WEB 사이트로부터는 DB를 참조해 그 날씨를 표시하는 형태로 했습니다.

사용하는 API
Livedoor 날씨 정보 서비스 Weather Hacks를 사용합니다.
ぇ tp // 우아아테 r. 아오오오 r. 코 m / 우에 아테 r_은 cks / 우에 bse r ゔ
전국 142곳의 3일간(오늘/내일/명후일)의 일기 예보·예상 기온을 json 형식으로 취득할 수 있습니다.
코드
당일의 최저 기온, 최고 기온, 텔롭(흐림 가끔 맑음, 같은 정보)을 취득해 DB에 보존할 때까지의 코드입니다.
# -*- coding: utf-8 -*-
import requests
import mysql.connector
def output_weather():
datas = []
url = 'http://weather.livedoor.com/forecast/webservice/json/v1?city='+city
api_data = requests.get(url).json()
if len(api_data) > 0:
if api_data['forecasts'][0]['temperature']['min'] is not None:
min_temp = api_data['forecasts'][0]['temperature']['min']['celsius']
else:
min_temp = '-'
if api_data['forecasts'][0]['temperature']['max'] is not None:
max_temp = api_data['forecasts'][0]['temperature']['max']['celsius']
else:
max_temp = '-'
datas.append([ api_data['forecasts'][0]['date'], api_data['location']['city'], min_temp, max_temp, api_data['forecasts'][0]['telop'] ])
else:
print('failed')
sqtbl = 'jd_api_weather' #テーブル名
#DB接続情報
conn = mysql.connector.connect(host = '{host_server_url}', db = '{database}', user = '{user_name}', password = '{passwd}', charset = 'utf8mb4')
c = conn.cursor()
#過去の天気情報は不要なので都度初期化
c.execute('drop table if exists ' + sqtbl) #初期化
c.execute('create table ' + sqtbl + '(Date date, City text, Min text, Max text, Telop text)')
#テーブルにINSERT処理
c.executemany('insert into ' + sqtbl + ' values (%s,%s,%s,%s,%s)',datas)
#施した変更を保存
conn.commit()
#確認用に結果を取得してコンソールに表示。
c.execute('select * from ' + sqtbl + ' order by Date desc limit 10;')
for rowsql in c.fetchall():
print(rowsql)
#接続終了
conn.close()
#Weather Hackで指定された地域ごとのIDを入れる。ちなみに130010は東京です
output('130010')
엄밀히 말하면 위의 Python 코드를 조금 수정하여 AWS의 LAMBDA에 두고 있으며 하루에 한 번 자동으로 실행하게 되어 있습니다. 그 정도라면 무료 테두리로 사용할 수 있습니다.
마지막으로
이번은 지역 ID가 고정으로 좋았습니다만, 여기를 인수로 하거나, 나머지는 에러의 핸들링 방법 등, 좀 더 잘 하고 싶다고 생각하고 있습니다.
파이썬을 작성하는 방법은 자기 흐름으로 배웠기 때문에 츳코미와 더 나은 쓰기가 있다면 코멘트를 주시면 기쁩니다.
Reference
이 문제에 관하여(파이썬으로 일기 예보 API를 두드려 데이터 취득 & DB 저장까지 해 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/xxbxxqxx/items/6da1210e25a888e0a42a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)