分析中央氣象局預報


In [69]:
import requests
from bs4 import BeautifulSoup
import pandas as pd

In [72]:
localhtnl = '''<option value="10017.htm">基隆市</option>
<option selected="selected" value="63.htm">臺北市</option>
<option value="65.htm">新北市</option>
<option value="68.htm">桃園市</option>
<option value="10018.htm">新竹市</option>
<option value="10004.htm">新竹縣</option>
<option value="10005.htm">苗栗縣</option>
<option value="66.htm">臺中市</option>
<option value="10007.htm">彰化縣</option>
<option value="10008.htm">南投縣</option>
<option value="10009.htm">雲林縣</option>
<option value="10020.htm">嘉義市</option>
<option value="10010.htm">嘉義縣</option>
<option value="67.htm">臺南市</option>
<option value="64.htm">高雄市</option>
<option value="10013.htm">屏東縣</option>
<option value="10014.htm">臺東縣</option>
<option value="10015.htm">花蓮縣</option>
<option value="10002.htm">宜蘭縣</option>
<option value="10016.htm">澎湖縣</option>
<option value="09020.htm">金門縣</option>
<option value="09007.htm">連江縣</option>'''

In [75]:
datasoup = BeautifulSoup(localhtnl, 'html.parser')
localDict = {}
for i in datasoup.findAll('option'):
    localDict[i['value']] = i.text

In [80]:
localDict
localData = []

In [82]:
for key, value in localDict.items():
    greq = requests.get('https://www.cwb.gov.tw/m/f/taiwan/36/{}'.format(key))
    greq.encoding = 'utf-8'
    soup = BeautifulSoup(greq.text, 'html.parser')
    cwdLable = ['今日白天', '今晚至明晨', '明日白天']
    table = soup.findAll('tbody')
    cwbList = []
    for n, tbody in enumerate(table):
        cwbDict ={}
        call = tbody.findAll('td')
        cwbDict['地區'] = value
        cwbDict['預報範圍'] = cwdLable[n]
        cwbDict['溫度(°C)'] = call[0].text
        cwbDict['天氣'] = call[1].text
        cwbDict['舒適度'] = call[2].text
        cwbDict['降雨機率'] = call[3].text
        cwbList.append(cwbDict)
    localData+=cwbList

In [84]:
pd.DataFrame(localData)[['地區', '預報範圍', '天氣', '溫度(°C)', '舒適度', '降雨機率']]


Out[84]:
地區 預報範圍 天氣 溫度(°C) 舒適度 降雨機率
0 基隆市 今日白天 晴時多雲 30 ~ 33 悶熱至易中暑 10%
1 基隆市 今晚至明晨 多雲 27 ~ 30 舒適至悶熱 10%
2 基隆市 明日白天 多雲短暫陣雨 27 ~ 32 悶熱至易中暑 30%
3 臺北市 今日白天 晴時多雲 31 ~ 34 悶熱 0%
4 臺北市 今晚至明晨 晴時多雲 27 ~ 31 舒適至悶熱 10%
5 臺北市 明日白天 晴時多雲 27 ~ 34 舒適至易中暑 10%
6 新北市 今日白天 晴時多雲 31 ~ 34 悶熱 0%
7 新北市 今晚至明晨 晴時多雲 27 ~ 31 舒適至悶熱 10%
8 新北市 明日白天 晴時多雲 27 ~ 34 舒適至悶熱 10%
9 桃園市 今日白天 晴時多雲 32 ~ 35 悶熱 0%
10 桃園市 今晚至明晨 晴時多雲 27 ~ 32 舒適至悶熱 10%
11 桃園市 明日白天 晴時多雲 27 ~ 34 舒適至悶熱 10%
12 新竹市 今日白天 晴時多雲 31 ~ 33 悶熱 0%
13 新竹市 今晚至明晨 多雲 26 ~ 31 舒適至悶熱 0%
14 新竹市 明日白天 晴時多雲 26 ~ 35 舒適至悶熱 10%
15 新竹縣 今日白天 晴時多雲 31 ~ 33 悶熱 0%
16 新竹縣 今晚至明晨 晴時多雲 26 ~ 31 舒適至悶熱 0%
17 新竹縣 明日白天 晴時多雲 26 ~ 36 舒適至易中暑 10%
18 苗栗縣 今日白天 多雲時晴 30 ~ 32 悶熱 0%
19 苗栗縣 今晚至明晨 多雲時晴 25 ~ 30 舒適至悶熱 0%
20 苗栗縣 明日白天 晴時多雲 25 ~ 34 舒適至易中暑 10%
21 臺中市 今日白天 多雲時晴 31 ~ 34 悶熱 0%
22 臺中市 今晚至明晨 多雲 26 ~ 31 舒適至悶熱 0%
23 臺中市 明日白天 晴時多雲 26 ~ 34 舒適至悶熱 10%
24 彰化縣 今日白天 多雲時晴 31 ~ 34 悶熱至易中暑 0%
25 彰化縣 今晚至明晨 多雲時晴 26 ~ 31 舒適至悶熱 0%
26 彰化縣 明日白天 晴時多雲 26 ~ 34 舒適至易中暑 10%
27 南投縣 今日白天 多雲時晴 30 ~ 34 悶熱至易中暑 20%
28 南投縣 今晚至明晨 晴時多雲 25 ~ 30 舒適至悶熱 0%
29 南投縣 明日白天 晴時多雲 25 ~ 34 舒適至悶熱 10%
... ... ... ... ... ... ...
36 嘉義縣 今日白天 多雲時晴 29 ~ 32 悶熱 20%
37 嘉義縣 今晚至明晨 多雲時晴 25 ~ 29 舒適至悶熱 0%
38 嘉義縣 明日白天 晴時多雲 25 ~ 34 舒適至悶熱 10%
39 臺南市 今日白天 多雲時晴 29 ~ 31 悶熱 10%
40 臺南市 今晚至明晨 多雲時晴 27 ~ 29 悶熱 10%
41 臺南市 明日白天 晴時多雲 27 ~ 33 悶熱 10%
42 高雄市 今日白天 多雲 30 ~ 32 悶熱 20%
43 高雄市 今晚至明晨 多雲 27 ~ 30 舒適至悶熱 10%
44 高雄市 明日白天 晴時多雲 27 ~ 33 舒適至悶熱 20%
45 屏東縣 今日白天 多雲 29 ~ 33 悶熱至易中暑 20%
46 屏東縣 今晚至明晨 多雲 25 ~ 29 舒適至悶熱 10%
47 屏東縣 明日白天 晴時多雲 25 ~ 35 舒適至易中暑 20%
48 臺東縣 今日白天 多雲 30 ~ 32 悶熱 10%
49 臺東縣 今晚至明晨 多雲短暫陣雨 26 ~ 30 舒適至悶熱 30%
50 臺東縣 明日白天 多雲時陰短暫陣雨 26 ~ 32 舒適至悶熱 30%
51 花蓮縣 今日白天 多雲短暫陣雨 30 ~ 33 悶熱 30%
52 花蓮縣 今晚至明晨 多雲短暫陣雨 26 ~ 30 舒適至悶熱 30%
53 花蓮縣 明日白天 多雲短暫陣雨 26 ~ 32 舒適至悶熱 40%
54 宜蘭縣 今日白天 晴時多雲 30 ~ 33 悶熱 10%
55 宜蘭縣 今晚至明晨 多雲 26 ~ 30 舒適至悶熱 20%
56 宜蘭縣 明日白天 多雲短暫陣雨 26 ~ 32 舒適至悶熱 40%
57 澎湖縣 今日白天 晴時多雲 29 ~ 32 悶熱 0%
58 澎湖縣 今晚至明晨 晴時多雲 27 ~ 29 舒適至悶熱 0%
59 澎湖縣 明日白天 晴時多雲 27 ~ 32 舒適至悶熱 0%
60 金門縣 今日白天 晴時多雲 30 ~ 34 悶熱 0%
61 金門縣 今晚至明晨 多雲時陰 27 ~ 30 舒適至悶熱 10%
62 金門縣 明日白天 多雲 27 ~ 34 舒適至悶熱 10%
63 連江縣 今日白天 多雲時晴 28 ~ 32 悶熱 10%
64 連江縣 今晚至明晨 多雲短暫陣雨 26 ~ 28 舒適至悶熱 30%
65 連江縣 明日白天 多雲時陰 26 ~ 31 舒適至悶熱 10%

66 rows × 6 columns


In [ ]: