기상청의 API를 사용하여 기온을 얻습니다.
기상청 웹사이트가 리뉴얼했기 때문에 웹 스크래핑을 할 수 없고 기온을 얻을 수 없다.
2021년 2월 16일 기상청 발표에서 인용:
기상청 홈페이지를 2월 24일 13시부터 리뉴얼합니다. 다양한 방재 기상 정보를 한 페이지에서 보기 쉽게 확인할 수 있게 되며, 스마트폰에서도 보기 쉬워집니다.
htps //w w. j. . jp / j / p / s / 2102 / 16 a / 20210216_j / hp_renew l. HTML
이 리뉴얼에 의해, 기상청이 아메다스 정보를 「표 형식」(HTML적으로는 table 태그)로서 표시하고 있던 데이터가 없어져, 웹 스크래핑으로 읽을 수 없게 되었습니다.
저는 예전보다 기상청 웹사이트에서 현지 기온을 빼내고 집 Zabbix에 데이터를 저장했기 때문에 어떠한 조치도 필요했습니다.
거기서, 여러가지 조사해 보면 비공식인 것 같습니다만, 기상청이 API를 공개(액세스 가능한 상태)로 하고 있는 것 같았습니다.
그것을 사용하여 사이타마 현 구마가야시의 기온을 얻는 파이썬 스크립트를 작성했습니다.
outside_tmp.py
# -*- coding: utf-8 -*-
#!/usr/bin/env python
# 注意点:
# 例えば12:00にデータが更新される場合、12:00にAPIを叩くとレスポンスjsonが不足している場合がある。
# そのため、crontabなどにより、5分~15分sleepしてから取得した方が良さそう。
import pprint
import requests
import datetime
def main():
# 現在の時刻を取得
now_raw = datetime.datetime.now()
now = now_raw.strftime('%Y%m%d%H')
# エンドポイントに最新時刻のurlを組み込み
url = "https://www.jma.go.jp/bosai/amedas/data/map/" + now + "0000.json"
header = {"content-type": "application/json"}
# 正しいjsonが返って来た場合のみ処理し、正しくないjsonの場合はエラーとする。
try:
response = requests.get(url, headers=header)
# 熊谷の tempを表示
data = response.json()
temp_arry = data["43056"]["temp"]
print temp_arry[0]
except KeyError:
pass
if __name__ == '__main__':
main()
스크립트의 '43056'은 쿠마가야의 코드입니다. 응답 json을 보면 알 수 있지만 기온 이외에도 취득이 가능합니다.
다만, 하나 걸린 점으로서는, json의 파일명이 변동하는 곳입니다.
htps //w w. j. . jp / 보사이 / 아메다 s / data / ma p / 20210411050000. j 그런
위에서는 20210411050000.json이 다음과 같이 분할됩니다.
2021年04月11日05時 + 0000
마지막 0000은 분/초로 추측됩니다. 앞으로는 분당 초 단위로 데이터 업데이트가 있을지도 모릅니다.
현재 특히 token 등은 없는 것 같습니다만, 상기를 참고로 되는 분은 절도를 지킨 다음의 액세스를 고려해 주세요.
저는 crontab에서 다음과 같이 설명합니다.
outside_temp.sh는 위의 python 스크립트 실행 결과를 파일로 내보내는 스크립트입니다. 내보낸 파일을 zabbix에 로드할 수 있습니다.
outside_temp.sh
#!/bin/bash
python /usr/local/src/outside_tmp.py > /tmp/outside_temp
15 */1 * * * /usr/local/src/outside_temp.sh > /dev/null 2>&1
이 스크립트를 각 n시간 15분에 취득하고 있습니다. 1:15 --> 2:15 --> 3:15 ...Zabbix에서 취하는 방법
이런 느낌이 되고 있습니다.
요약
Reference
이 문제에 관하여(기상청의 API를 사용하여 기온을 얻습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-nara/items/cc3aee2d712aed1052a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)