# 即時台灣水庫蓄水量 ###### tags: `自己玩` 將資料抓下來 ```python= import matplotlib.pyplot as plt import urllib.request as ur url = 'https://www.taiwanstat.com/waters/latest' u = ur.urlopen(url) w = u.read() c = w.decode('utf-8') ``` c的結果 ``` '[{"寶山第二水庫":{"baseAvailable":"3147.18","id":"reservoir4","updateAt":"2021-08-07(15)","volumn":"3170.61","percentage":100,"daliyOverflow":"26.08","daliyInflow":"32.08","daliyNetflow":-6,"name":"寶山第二水庫"},"日月潭水庫":{"baseAvailable":"12806.03","id":"reservoir9","u pdateAt":"2021-08-07(7時)","volumn":"12162.92","percentage":94.9,"daliyOverflow":"348.88","daliyInflow":"500.08","daliyNetflow":-151.2,"name":"日月潭水庫"},"南化水庫":{"baseAvailable":"9097.90","id":"reservoir16","updateAt":"2021-08-07(7時)","volumn":"9829.55","percentage":100,"daliyOverflow":"1,017.40","daliyInflow":"1,241.90","dal iyNetflow":-224.5000000000001,"name":"南化水庫"},"翡翠水庫":{"baseAvailable":"33550.50","id":"reservoir1","updateAt":"2021-08-07(15時)","volumn":"30158.46","percentage":89.8,"daliyOverflow":"684.00","daliyInflow":"360.00","daliyNetflow":324,"name":"翡翠水庫"},"湖山水庫": {"name":"湖山水庫","id":"reservoir19","updateAt":"2021-08-07(16時)","volumn":"5110.15","percentage":100,"daliyOverflow":"24.82","daliyInflow":"38.36","daliyNetflow":-13.54,"baseAvailable":"5086.51"},"德基水庫":{"baseAvailable":"18642.00","id":"reservoir7","updateAt":"2021-08-07(7 時)","volumn":"12340.66","percentage":66.2,"daliyOverflow":"0.00","daliyInflow":"227.20","daliyNetflow":-227.2,"name":"德基水庫"},"烏山頭水庫":{"baseAvailable":"7857.90","id":"reservoir15","updateAt":"2021-08-07(16時)","volumn":"8332.00","percentage":100,"daliyOverflow":"270.60","daliyInflow":"715.60","daliyNe tflow":-445,"name":"烏山頭水庫"},"石門水庫":{"baseAvailable":"20266.10","id":"reservoir2","updateAt":"2021-08-07(16時)","volumn":"19866.37","percentage":98,"daliyOverflow":"841.16","daliyInflow":"1,145.89","daliyNetflow":-304.73000000000013,"name":"石門水庫"},"蘭潭水庫": {"baseAvailable":"923.97","id":"reservoir21","updateAt":"2021-08-07(7時)","volumn":"913.46","percentage":98.8,"daliyOverflow":"10.87","daliyInflow":"26.95","daliyNetflow":-16.08,"name":"蘭潭水庫"},"霧社水庫":{"baseAvailable":"3752.88","id":"reservoir10","updateAt":"2021-08-07(7 時)","volumn":"2281.82","percentage":60.8,"daliyOverflow":"380.16","daliyInflow":"309.63","daliyNetflow":70.53000000000003,"name":"霧社水庫"},"曾文水庫":{"baseAvailable":"50956.00","id":"reservoir14","updateAt":"2021-08-07(16時)","volumn":"45603.00","percentage":89.4,"daliyOverflow":"7,231.20","daliyInflow":"7,250.20","daliyNetflow":-19,"name":"曾文水庫"},"白河水庫": {"baseAvailable":"1173.45","id":"reservoir13","updateAt":"2021-08-07(16時)","volumn":"1110.00","percentage":94.5,"daliyOverflow":"321.12","daliyInflow":"426.12","daliyNetflow":-105,"name":"白河水庫"},"新山水庫":{"baseAvailable":"1002.00","id":"reservoir0","updateAt":"2021-08-07(8時)","volumn":"834.72","percentage":83.3,"daliyOverflow":"0.00","daliyInflow":"2.88","daliyNetflow":-2.88,"name":"新山水庫"},"仁義潭水庫": {"baseAvailable":"2482.25","id":"reservoir12","updateAt":"2021-08-07(7時)","volumn":"2482.25","percentage":100,"daliyOverflow":"36.03","daliyInflow":"63.66","daliyNetflow":-27.629999999999995,"name":"仁義潭水庫"},"寶山水庫":{"baseAvailable":"503.50","id":"reservoir20","updateAt":"2021-08-07(7時)","volumn":"466.28","percentage":92.6,"daliyOverflow":"6.54","daliyInflow":"9.87","daliyNetflo w":-3.329999999999999,"name":"寶山水庫"},"永和山水庫":{"baseAvailable":"2998.94","id":"reservoir3","updateAt":"2021-08-07(16時)","volumn":"2928.81","percentage":97.66150706582992,"daliyOverflow":"--","daliyInflow":"--","daliyNetflow":"--","name":"永和山水庫"},"阿公店水庫":{"baseAvailable":"1525.89","id":"reservoir17","u pdateAt":"2021-08-07(16時)","volumn":"263.00","percentage":17.2,"daliyOverflow":"157.64","daliyInflow":"174.24","daliyNetflow":-16.600000000000023,"name":"阿公店水庫"},"明德水庫":{"baseAvailable":"1222.05","id":"reservoir5","updateAt":"2021-08-07(16時)","volumn":"1080.10","percentage":88.38427232928275,"daliyOverflow":"--","daliyInflow":"--","daliyNetflow":"--","name":"明德水庫"},"鯉魚潭水庫":{"baseAvailable":"11446.01","id":"reservoir6","updateAt":"2021-08-07(15時)","volumn":"11635.64","percentage":100,"daliyOverflow":"276.11","daliyInflow":"342.23","daliyNetflow":-66.12,"name":"鯉魚潭水庫"},"石岡壩":{"baseAvailable":"149.31","id":"reservoir8","updateAt":"2021-08-07(16時)","volumn":"46.76","percentage":31.3,"daliyOverflow":"1,255.90","daliyInflow":"1,264.10","daliyNetflow":-8.199999999999818,"name":"石岡壩"},"牡丹水庫":{"baseAvailable":"2651.32","id":"reservoir18","updateAt":"2021-08-07(16時)","volumn":"1848.01","percentage":69.7,"daliyOverflow":"579.02","daliyInflow":"430.91","daliyNetflow":148.10999999999996,"name":"牡丹水庫"}}]' ``` 抓取水庫名稱及蓄水量 ```python= r = 0 d = 0 p = 0 k = 1 q = [] z = [] for i in range(c.count('水庫')): a = c.find('水庫',d) d = a+2 if i % 2 == 0 :#因為水庫名稱有重複 要加一個刪一個 p = c.find('percentage',r) print(c[a-4:a+2].strip(',"')+":",c[p:p+15].strip('.')+'%') r = p+15 q.append(c[a-4:a+2].strip(',"'))#剔除不要的,":之類的 ``` 輸出結果 ``` 寶山第二水庫: percentage":100% 日月潭水庫: percentage":94% 南化水庫: percentage":100% 翡翠水庫: percentage":89% 湖山水庫: percentage":100% 德基水庫: percentage":66% 烏山頭水庫: percentage":100% 石門水庫: percentage":98,% 蘭潭水庫: percentage":98% 霧社水庫: percentage":60% 曾文水庫: percentage":89% 白河水庫: percentage":94% 新山水庫: percentage":83% 仁義潭水庫: percentage":100% 寶山水庫: percentage":92% 永和山水庫: percentage":97% 阿公店水庫: percentage":17% 明德水庫: percentage":88% 鯉魚潭水庫: percentage":100% 牡丹水庫: percentage":31% ``` 話長條圖 ```python= o = list(map(float,z))#因為z[i]type為str 要改成float plt.figure(figsize=(70,30))#表格大小 plt.rcParams['font.family']='DFKai-SB'#顯示中文 只有window10有 plt.tick_params(axis='x', labelsize=30) plt.tick_params(axis='y', labelsize=30) for i in range(0,len(q)): if int(o[i]) < 50:#續水輛低於50寫紅色 plt.text(i-0.1,float(z[i])+2 , z[i]+'%',fontsize=30,color = 'red') if int(o[i])>=50: plt.text(i-0.1,float(z[i])+2 , z[i]+'%',fontsize=30,color = 'blue') plt.bar(q,o,color = 'cornflowerblue') ``` ![](https://i.imgur.com/ylHrmlj.png)