一步一步教你PowerBI利用爬蟲獲取天氣數據分析


  對於爬蟲大家應該不會陌生,我們首先來看一下爬蟲的定義:網絡爬蟲是一種自動獲取網頁內容的程序,是搜索引擎的重要組成部分。網絡爬蟲為搜索引擎從萬維網下載網頁,自動獲取網頁內容的應用程序。看到定義我們應該已經知道它是可以從萬維網上下載網頁解析網頁數據的。大家想一下在數據分析情景中它的應用場景有哪些?采集天氣數據,網站采集文章,采集各種票務信息,股票信息采集等等有很多地方都會用的爬蟲采集數據進行數據分析。通過數據分析增加分析維度信息,尤其是行業數據對標。

  提及爬蟲有些軟件工程師會第一時間想到Python。Python確實是非常方便的開發軟件,會附帶大量的依賴庫,可以非常簡單快速構建爬蟲應用程序目前有一些框架只需要寫提取規則就可以實現數據提取。我們這里要講的爬蟲是針對PowerBI軟件中創建的采集天氣數據爬蟲程序。很多行業會受天氣影響較大,如果能夠知道某地區的天氣數據歷史記錄,就可以讓銷售數據的維度更加豐富。從而給決策者判斷問題時做出更好的參考。接下來小黎子將以湖北省主要城市為例,帶領大家一起實現PowerBI構建爬蟲抓取天氣數據歷史記錄。本案例的數據源來自於網絡-天氣后報,網頁中的數據最簡單的一種形式就是表格。通過本文大家可以和我一樣實現下圖的天氣報告

 

一、分析網站的URL結構

1、確定城市列表URL數據

我要分析的數據是湖北省主要城市的天氣,首先在天氣后報網站中找到歷史天氣,點擊進入后找到湖北省

 

 

2、確定城市的URL信息

打開任意一個城市的界面,可以單獨頁面內容為武漢市各年度歷史天氣列表。主要URL中有WUHAN字符。這里我們可以確定每個城市的鏈接都存在着相同的規律。

3、確定月份的URL信息

點擊上圖的任意月份,進入月份的天氣列表頁。通過分析URL地址我們也可以看到規律。URL中城市拼音加年月的變量可以獲得各個城市各個月份每天的天氣狀況。

 

 

二、構建爬蟲主體

在分析URL過程中我們已經找到了網頁URL的規律,因此,我們可以建立城市列表和日期列表。將兩個參數引入URL,從而抓取城市不同時間的天氣數據。注意,歷史天氣數據是回顧過去的,天氣預報也是一樣的分析思路。

1、建立城市列表

 

 

2、建立日期列表

在城市列表中添加開始日期

 

 

結束日期

 

 

日期,注意這里需要將日期轉換為數值,提取完成后再轉換為日期

 

 

展開日期列數據,將格式更改為日期類型

 

 

添加年月列

 

 

提取年和月數據用於后續切片器

 

 

刪除重復項

 

 

3、將我們處理好的數據賦值到URL中

城市列表和日期列表都已經處理好了,下一步就是處理兩個列表和URL的關聯關系

新建URL自定義列

 

 

忽略隱私檢查

 

 

展開URL列,選擇Source和Data列即可

 

 

展開Data列,只保留前四列數據

 

 

刪除多余的內容,篩選去除標題和空白行

 

 

拆分氣溫為最高和最低氣溫,按分隔符/拆分

 

 

去除溫度符號℃,用於轉換為數值

 

 

處理后

 

 

到這里我們已經完成了爬蟲的數據清洗工作,接下來就開始進入可視化報告制作。

注意:由於起始日期為2011-1-1下載的數據量比較大,需要等待很長時間。大家可以將起始日期更改為2019-1-1以后的日期加載數據會比較快一點。

 

三、制作可視化報告

1、制作年份,月份,城市切片器。城市切片器注意設置方向為水平方向

2、氣溫趨勢線

3、天氣明細矩陣表

 

 

4、區域地圖

大家可以根據自己的喜好調整不同的主題顏色

 

四、總結

我們順利完成了抓取湖北省各個城市的2019年的歷史天氣數據。在使用PowerBI爬蟲應用時需要注意的點:

1、分析URL規律是開始處理爬蟲的最重要的環節

2、通過PowerBI輸入數據功能建立城市列表和使用M函數建立日期列表。

3、兩個列表結合處理URL地址解析對應的天氣數據,通過WEB.CONTENTS提取網頁內容是爬蟲的核心內容。大家可以繼續延伸學習M函數的使用方法。

4、在后續的文章中也會出現少量的M函數使用,編輯器中會有智能提示告訴大家使用規則,大家也可以通過微軟官網查看M函數的語法。

注意:PowerBI爬蟲應用不只是能夠解析這種簡單的結構,目前有很多的網站后台都是傳遞的json數據,PowerBI也是可以應對的處理的,只是需要將JSON數據轉換為表格。在后續的分析情景中我會進一步來講解爬蟲應用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM