2023年1月8日 星期日

Python 爬取天氣預報

 Python 爬取天氣預報

參考來源 https://steam.oxxostudio.tw/category/python/spider/forecast.html

import requests


# url = '一般天氣預報 - 今明 36 小時天氣預報 JSON 連結'

url = "https://opendata.cwb.gov.tw/fileapi/v1/opendataapi/F-C0032-001?Authorization=rdec-key-123-45678-011121314&format=JSON"

data = requests.get(url)   # 取得 JSON 檔案的內容為文字

data_json = data.json()    # 轉換成 JSON 格式

location = data_json['cwbopendata']['dataset']['location']

for i in location:

    city = i['locationName']    # 縣市名稱

    wx8 = i['weatherElement'][0]['time'][0]['parameter']['parameterName']    # 天氣現象

    maxt8 = i['weatherElement'][1]['time'][0]['parameter']['parameterName']  # 最高溫

    mint8 = i['weatherElement'][2]['time'][0]['parameter']['parameterName']  # 最低溫

    ci8 = i['weatherElement'][3]['time'][0]['parameter']['parameterName']    # 舒適度

    pop8 = i['weatherElement'][4]['time'][0]['parameter']['parameterName']   # 降雨機率

    print(f'{city}未來 8 小時{wx8},最高溫 {maxt8} 度,最低溫 {mint8} 度,降雨機率 {pop8} %')

    

    >>> %Run -c $EDITOR_CONTENT

臺北市未來 8 小時多雲短暫雨,最高溫 23 度,最低溫 20 度,降雨機率 30 %

新北市未來 8 小時多雲短暫雨,最高溫 24 度,最低溫 21 度,降雨機率 30 %

桃園市未來 8 小時多雲短暫雨,最高溫 23 度,最低溫 20 度,降雨機率 30 %

臺中市未來 8 小時多雲,最高溫 22 度,最低溫 20 度,降雨機率 10 %

臺南市未來 8 小時晴時多雲,最高溫 22 度,最低溫 20 度,降雨機率 10 %

高雄市未來 8 小時晴時多雲,最高溫 24 度,最低溫 23 度,降雨機率 10 %

基隆市未來 8 小時多雲短暫雨,最高溫 22 度,最低溫 20 度,降雨機率 40 %

新竹縣未來 8 小時晴時多雲,最高溫 22 度,最低溫 19 度,降雨機率 20 %

新竹市未來 8 小時晴時多雲,最高溫 20 度,最低溫 18 度,降雨機率 20 %

苗栗縣未來 8 小時多雲,最高溫 21 度,最低溫 19 度,降雨機率 20 %

彰化縣未來 8 小時多雲,最高溫 21 度,最低溫 19 度,降雨機率 10 %

南投縣未來 8 小時晴時多雲,最高溫 23 度,最低溫 21 度,降雨機率 10 %

雲林縣未來 8 小時多雲,最高溫 22 度,最低溫 20 度,降雨機率 10 %

嘉義縣未來 8 小時晴時多雲,最高溫 23 度,最低溫 20 度,降雨機率 10 %

嘉義市未來 8 小時晴時多雲,最高溫 24 度,最低溫 21 度,降雨機率 10 %

屏東縣未來 8 小時多雲,最高溫 26 度,最低溫 24 度,降雨機率 10 %

宜蘭縣未來 8 小時多雲短暫雨,最高溫 21 度,最低溫 19 度,降雨機率 60 %

花蓮縣未來 8 小時多雲短暫雨,最高溫 22 度,最低溫 20 度,降雨機率 70 %

臺東縣未來 8 小時陰短暫雨,最高溫 23 度,最低溫 21 度,降雨機率 40 %

澎湖縣未來 8 小時多雲,最高溫 19 度,最低溫 18 度,降雨機率 10 %

金門縣未來 8 小時陰短暫雨,最高溫 19 度,最低溫 17 度,降雨機率 60 %

連江縣未來 8 小時陰時多雲短暫雨,最高溫 15 度,最低溫 14 度,降雨機率 40 %

>>> 




{
     "locationName": "臺中市",
     "weatherElement": [
      {
       "elementName": "Wx",
       "time": [
        {
         "startTime": "2023-01-09T12:00:00+08:00",
         "endTime": "2023-01-09T18:00:00+08:00",
         "parameter": {
          "parameterName": "多雲",
          "parameterValue": "4"
         }
        },
        {
         "startTime": "2023-01-09T18:00:00+08:00",
         "endTime": "2023-01-10T06:00:00+08:00",
         "parameter": {
          "parameterName": "多雲短暫雨",
          "parameterValue": "8"
         }
        },
        {
         "startTime": "2023-01-10T06:00:00+08:00",
         "endTime": "2023-01-10T18:00:00+08:00",
         "parameter": {
          "parameterName": "多雲時晴",
          "parameterValue": "3"
         }
        }
       ]
      },
      {
       "elementName": "MaxT",
       "time": [
        {
         "startTime": "2023-01-09T12:00:00+08:00",
         "endTime": "2023-01-09T18:00:00+08:00",
         "parameter": {
          "parameterName": "22",
          "parameterUnit": "C"
         }
        },
        {
         "startTime": "2023-01-09T18:00:00+08:00",
         "endTime": "2023-01-10T06:00:00+08:00",
         "parameter": {
          "parameterName": "20",
          "parameterUnit": "C"
         }
        },
        {
         "startTime": "2023-01-10T06:00:00+08:00",
         "endTime": "2023-01-10T18:00:00+08:00",
         "parameter": {
          "parameterName": "23",
          "parameterUnit": "C"
         }
        }
       ]
      },
      {
       "elementName": "MinT",
       "time": [
        {
         "startTime": "2023-01-09T12:00:00+08:00",
         "endTime": "2023-01-09T18:00:00+08:00",
         "parameter": {
          "parameterName": "20",
          "parameterUnit": "C"
         }
        },
        {
         "startTime": "2023-01-09T18:00:00+08:00",
         "endTime": "2023-01-10T06:00:00+08:00",
         "parameter": {
          "parameterName": "18",
          "parameterUnit": "C"
         }
        },
        {
         "startTime": "2023-01-10T06:00:00+08:00",
         "endTime": "2023-01-10T18:00:00+08:00",
         "parameter": {
          "parameterName": "18",
          "parameterUnit": "C"
         }
        }
       ]
      },
      {
       "elementName": "CI",
       "time": [
        {
         "startTime": "2023-01-09T12:00:00+08:00",
         "endTime": "2023-01-09T18:00:00+08:00",
         "parameter": {
          "parameterName": "稍有寒意至舒適"
         }
        },
        {
         "startTime": "2023-01-09T18:00:00+08:00",
         "endTime": "2023-01-10T06:00:00+08:00",
         "parameter": {
          "parameterName": "稍有寒意"
         }
        },
        {
         "startTime": "2023-01-10T06:00:00+08:00",
         "endTime": "2023-01-10T18:00:00+08:00",
         "parameter": {
          "parameterName": "稍有寒意至舒適"
         }
        }
       ]
      },
      {
       "elementName": "PoP",
       "time": [
        {
         "startTime": "2023-01-09T12:00:00+08:00",
         "endTime": "2023-01-09T18:00:00+08:00",
         "parameter": {
          "parameterName": "10",
          "parameterUnit": "百分比"
         }
        },
        {
         "startTime": "2023-01-09T18:00:00+08:00",
         "endTime": "2023-01-10T06:00:00+08:00",
         "parameter": {
          "parameterName": "30",
          "parameterUnit": "百分比"
         }
        },
        {
         "startTime": "2023-01-10T06:00:00+08:00",
         "endTime": "2023-01-10T18:00:00+08:00",
         "parameter": {
          "parameterName": "20",
          "parameterUnit": "百分比"
         }
        }
       ]
      }
     ]
    },
    {

沒有留言:

張貼留言

WOKWI LED + MQTT Node-Red SQLite

WOKWI LED + MQTT Node-Red SQLite const char *mqtt_broker = "broker.mqtt-dashboard.com" ; const char *topic1 = "alex9ufo/e...