雜亂大全20-擷取AQI空氣品質

  • 前言:本次為pytube的基本練習
tags: 六角學院

主題:雜亂大全20-擷取AQI空氣品質

本篇重點:

  • 練習使用BeautifulSoup處理雲端數據

安裝模組

1
pip install beautifulsoup4

文件

找尋國家AQI資訊(即時資料請至環保署申請帳號)

使用模組

  • 部分程式碼:
    1
    2
    from bs4 import BeautifulSoup
    import urllib.request as ur

格式

  • 分成XML與JSON,本篇使用XML格式
  • 部分程式碼:
    1
    data = BeautifulSoup(get_xml, 'xml')

API格式

請參考環保署
本次limit設定5,意思是取出五筆資料

完整範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# -*- coding: utf-8 -*-
"""
OpenData資料擷取與應用
XML格式
"""

from bs4 import BeautifulSoup
import urllib.request as ur

od_url = "https://data.epa.gov.tw/api/v1/psi_p_02?format=xml&limit=5&api_key=9be7b239-557b-4c10-9775-78cadfc555e9"

with ur.urlopen(od_url) as response:
get_xml = response.read()

data = BeautifulSoup(get_xml, 'xml')
SiteName = data.find_all('SiteName')
County = data.find_all('County')
CO1 = data.find_all('CO')
PublishTime = data.find_all('DataCreationDate')

print(data)

csv_str = ""
for i in range(len(SiteName)):
print(SiteName[i].get_text(),County[i].get_text(),CO1[i].get_text(),PublishTime[i].get_text())
# csv_str += "{},{},{},{},{}\n". \
# format(SiteName[i].get_text(),County[i].get_text(),pm25[i].get_text(),Status[i].get_text())

print("完成")

執行結果

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="utf-8"?>
<psi_p_02><data><Status>普通</Status><PSI>81.0</PSI><CO>0.68</CO><PM10>67</PM10><NO>2.42</NO><SiteName>萬里</SiteName><FPMI>3.0</FPMI><WindDirec>43.0</WindDirec><PM2.5>33</PM2.5><PM2.5_AVG>26.0</PM2.5_AVG><DataCreationDate>2017-04-30 13:00</DataCreationDate><County>新北市</County><WindSpeed>3.8</WindSpeed><SO2>4.2</SO2><NOx>15.48</NOx><NO2>13.0</NO2><O3>98.0</O3><Pollutant>臭氧</Pollutant></data><data><Status>普通</Status><PSI>86.0</PSI><CO>0.44</CO><PM10>33</PM10><NO>1.26</NO><SiteName>新店</SiteName><FPMI>2.0</FPMI><WindDirec>6.5</WindDirec><PM2.5>25</PM2.5><PM2.5_AVG>21.0</PM2.5_AVG><DataCreationDate>2017-04-30 13:00</DataCreationDate><County>新北市</County><WindSpeed>2.7</WindSpeed><SO2>3.3</SO2><NOx>11.38</NOx><NO2>10.0</NO2><O3>104.0</O3><Pollutant>臭氧</Pollutant></data><data><Status>普通</Status><PSI>73.0</PSI><CO>0.27</CO><PM10>33</PM10><NO>0.53</NO><SiteName>基隆</SiteName><FPMI>2.0</FPMI><WindDirec>43.0</WindDirec><PM2.5>21</PM2.5><PM2.5_AVG>21.0</PM2.5_AVG><DataCreationDate>2017-04-30 13:00</DataCreationDate><County>基隆市</County><WindSpeed>1.5</WindSpeed><SO2>3.3</SO2><NOx>7.09</NOx><NO2>6.6</NO2><O3>87.0</O3><Pollutant>臭氧</Pollutant></data><data><Status>普通</Status><PSI>80.0</PSI><CO>0.37</CO><PM10>40</PM10><NO>1.45</NO><SiteName>汐止</SiteName><FPMI>2.0</FPMI><WindDirec>60.0</WindDirec><PM2.5>27</PM2.5><PM2.5_AVG>21.0</PM2.5_AVG><DataCreationDate>2017-04-30 13:00</DataCreationDate><County>新北市</County><WindSpeed>3.0</WindSpeed><SO2>8.1</SO2><NOx>14.18</NOx><NO2>13.0</NO2><O3>96.0</O3><Pollutant>臭氧</Pollutant></data><data><Status/><PSI/><CO>0.32</CO><PM10>34</PM10><NO>1.52</NO><SiteName>土城</SiteName><FPMI/><WindDirec>303.0</WindDirec><PM2.5>18</PM2.5><PM2.5_AVG/><DataCreationDate>2017-04-30 13:00</DataCreationDate><County>新北市</County><WindSpeed>1.7</WindSpeed><SO2>3.1</SO2><NOx>9.74</NOx><NO2>8.2</NO2><O3>94.0</O3><Pollutant/></data></psi_p_02>
萬里 新北市 0.68 2017-04-30 13:00
新店 新北市 0.44 2017-04-30 13:00
基隆 基隆市 0.27 2017-04-30 13:00
汐止 新北市 0.37 2017-04-30 13:00
土城 新北市 0.32 2017-04-30 13:00
完成

參考資料

[1]空氣品質污染指標(含PM2.5)
https://data.epa.gov.tw/dataset/psi_p_02/resource/f16e3227-f36d-4c98-aeb0-44d40877e7f9