Mar 12, 2017

[技巧] 用google文件Spreadsheet自動抓取網頁資訊(空氣品質open data)

基於幫助友人的因素
又看到有人說可以用google文件做出來(適用於靜態網頁,動態產生的就不適了)
但是沒有詳細的說明,於是研究了一下這個應用
沒人教,果然還是要花上很多時間,記錄一下此結果
原來 google drive (google docs)已有這麼強大的功能!

先看到處查詢來的[教學文]吧:
1.無痛爬梳自己來,用 Google Spreadsheet 爬取網頁資料 | 資料視覺化 - http://blog.infographics.tw/2016/11/google-spreadsheet-data-scraping/
2.Y.H.Lin: Google Spreadsheets 抓外部資料的函數 - http://yhlintw.blogspot.tw/2007/09/google-spreadsheets.html
3.iInfo 資訊交流: Google Spreadsheet 試算表 抓網頁資料 - http://white5168.blogspot.tw/2015/06/google.html#.WMH7-fLQOaI
4.利用Google試算表(Spreadsheet)取得台股(上市/上櫃)及美股股票報價(2015-12-05 更新) @ HC愛筆記 財經部落格 - http://hclovenote.blogspot.tw/2014/12/googlespreadsheet20141219.html

■配合政府現在最流行的[開放資料來源],隨便選一個資料來源都能試:
1.OpenData.epa 行政院環境保護署 環境資源資料開放平台
http://opendata.epa.gov.tw/Data/Contents/AQI/
2.資料資源 | 政府資料開放平臺 - http://data.gov.tw/node/gov/resource/63867
3.空氣品質警示 - http://www.kh.edu.tw/theme/AQI_Monitor/air.html
4.高雄市空氣資料  http://www.kh.edu.tw/theme/AQI_Monitor/air.html 

在google試算表內的[各種範例]:
◆=ImportHtml("http://en.wikipedia.org/wiki/Demographics_of_India", "table",4)
說明:這個後面的參數有 table表格 與 list ,至於後面的數字是多少(第幾個表格),就要自己實驗了
 ◆=importDATA("http://data.gov.tw/iisi/logaccess/63867?dataUrl=http://opendata.epa.gov.tw/ws/Data/AQI/?format=csv&ndctype=CSV&ndcnid=40448")
說明:這個可以用來讀csv檔案
◆=importXML("http://www.kh.edu.tw/theme/AQI_Monitor/air.html"
,"//*/tbody/tr[68]/td[1]/p")
◆=importXML("https://www.ptt.cc/bbs/Baseball/index.html","//*/div[2]/div/div/a")
說明:這是用來讀html或是xml文件的
◆還有個jason格式的就沒列出來了

■實做
選用的網站是,OpenData.epa 行政院環境保護署 環境資源資料開放平台
一開始用想說用CSV文件即可
找到它的CSV下載網址:
http://data.gov.tw/iisi/logaccess/63867?dataUrl=http://opendata.epa.gov.tw/ws/Data/AQI/?%24orderby=SiteName&%24skip=0&%24top=1000&format=csv&ndctype=CSV&ndcnid=40448
使用句型:
=importDATA("http://data.gov.tw/iisi/logaccess/63867?dataUrl=http://opendata.epa.gov.tw/ws/Data/AQI/?format=csv&ndctype=CSV&ndcnid=40448")
後來發現不能更新
原來它的csv是一小時產生一個新的,而且csv檔名都不一樣

只好打掉重來,還是要靠XML
找到該網站的 XML連結,看了一下,確定它的位置名稱是固定不變的
http://opendata.epa.gov.tw/ws/Data/REWIQA/?$orderby=SiteName&$skip=0&$top=1000&format=xml

第一格列出地名↓ 
=importXML("http://opendata.epa.gov.tw/ws/Data/REWIQA/?$orderby=SiteName&$skip=0&$top=1000&format=xml","//*/SiteName")
第二格列出AQI空氣品質↓

=importXML("http://opendata.epa.gov.tw/ws/Data/REWIQA/?$orderby=SiteName&$skip=0&$top=1000&format=xml","//*/AQI")

在google 文件內就出現這樣子:


大功告成!
再按下檔案裡面的發佈成網頁即可
也可再自己做成新的google Spreadsheet頁面呈現之。例如:


同場加映,下面空氣品質評語的判斷公式:
=IF(A1>301,"有害",IF(A1>200,"非常不良",IF(A1>150,"對所有族群不良",IF(A1>100,"對敏感族群不良",IF(A1>50,"普通","良好")))))
以上是舉例,不要複製貼上嘿。A1是儲存格,「>」是大於的符號
多重IF即可根據空氣品質的數字,自動顯示相對應的評語啦!

No comments:

Post a Comment