黑科技!當會爬蟲的Python遇上會畫圖的FineBI……
我們平時在用Python爬取網頁上的數據時,對爬取到到的數據做數據分析展現有很多種方式,比如可以通過echart圖表接口、python提供的第三方庫,甚至還可以用matlab工具來進行數據統計和圖表可視化展現。
可無論是以上哪一種方式,都需要通過代碼來調用Python爬好的數據來進行畫圖,圖表樣式屬性設置等方面還是比較繁瑣的。
同樣的問題,有一次小編領導要求我做一份有關于南京房價的數據匯報,需要做到報表里面。數據是沒有的,自然而然想到用Python爬,爬好后直接做數據圖表粘貼到報表中。但后來發現方法太土,匯報時不好做動態的數據展現(影響小編炫技裝逼)。于是乎就想辦法,將爬取到的數據導入到報表或者BI系統里面,利用BI本身的一些分析功能,聯動著其他數據做展現。于是就有了本篇“Python爬數據,FineBI畫圖”的文章。
關于FineBI
這是一個可視化的自助式BI工具,整個操作就是導數據/連數據庫——處理數據(可視化ETL)選擇圖表——拖數據字段——可視化展現&美化,操作簡單上手快。小編只是用了其可視化的一隅功能,多數情況下,這個工具都是拿來做可視化報表,對接企業大數據平臺,做企業數據運營分析用。
原理介紹
廢話不多說,直接貼出操作。
因為想看看南京房價數據,但是網站上的很多數據都是以HTM5的形式進行呈現的,所以考慮通過Python來進行網頁數據抓取和入庫,數據分析方面通過FineBI工具直接連接數據庫,分析和可視化呈現。
整體的思路:
數據層方面先通過Python抓取到WEB端的網頁數據,之后對爬取到數據進行解析再而存儲到MYSQL數據入庫;
最后應用層的數據處理、數據計算統計、圖表可視化呈現等工作全都交由FineBI工具來做。
操作步驟
1.引入相關python庫包
首先新建python工程,引入本次爬取網頁數據和寫入MySQL數據庫所需要的requests、pymysql、bs4這三個包:
2.獲取網頁數據
然后如下圖所示,通過編寫Python代碼獲取到某一個房產網頁的南京售房平臺的網頁信息:
3.HTML標簽解析
接著再對DIV樣式下的HTML數據包進行逐一解析,獲取到想要的房源名稱、地址、小區、戶型、面積、總價、單價、區域等數據:
其中對應網頁的標簽樣式可以通過瀏覽器的F12開發選項進行快速獲取,如下圖所示的定位房源信息截圖,我們只需要右鍵瀏覽器在所需要獲取標簽樣式名稱的地方點擊檢查元素即可(房源名稱的標簽即位house-title的title元素)。
4.MySQL數據回寫
解析好數據之后,再將解析好的數據寫入到MySQL數據庫中:
循環遍歷該平臺在南京最近七天的網頁售房信息數據,頁面17頁,共計377條數據:
5.安裝FineBI&&驗證數據入庫
通過FineBI官網下載并按照引導安裝好軟件:
直接通過FineBI提供的數據配置端的功能,添加SQL數據集(或者直接添加表也行),查看和驗證剛剛爬取并且入庫的數據是否已經真正成功入庫到MySQL中了。
如下圖所示,Python果然不辱使命,我要的該平臺的七天南京的房價售房數據都已經成功寫入到了我的MySQL數據庫中了。
6.FineBI可視化制作&成果展示
然后思考需要分析展現哪些內容,比如“南京各小區房價分布”、“房型價格分析”、“各區域房價分析”.....通過FineBI制作圖表展現。
下面這個動圖展示了一個圖表的制作,其他都類似的,可參考。不懂可參見FineBI官網的幫助文檔。
花了十分鐘,就將我想要看的南京售房信息(房源面積均價、套房總均價、小區房價四象限分布圖、區域房價分析、房型價格分析)以可視化的形式呈現出來了。
最后就是本次成果展示啦,也曬出來跟大家分享下,如下所示:
1.目前南京房源均價為3.78萬每平方米,總均價為401.38萬,總體上還是比較高的。
2.建鄴區房價最高,果然房價還是緊跟國家政策啊,建鄴目前城區開發建設政府的扶持力度在南京都是走在前面的。鼓樓、玄武、秦淮分別排在二、三、四的位置,雨花臺和江寧房價相對較低,綜合市區位置來看,還是秦淮區性價比最高啊 。
3.房型方面,6室3廳的豪華大宅總均價接近一千萬,比如紫檀雅居、碧水灣別墅、濱江奧城聽雨苑這一類土豪小區,多集中在建鄴和鼓樓區域;一室一廳的房子均價大概在150萬的樣子,比如托樂嘉單身公寓、經緯城市花園等小區,適合單身貴族或者情侶小夫婦居住,南京各個大區都有;比較主流的三室一廳房價在300萬左右,比如喬虹苑小區、良辰美景家園、白云園,多集中在秦淮和鼓樓區域。
后記
Python完成對網頁數據的抓取和解析存儲之后,配合FineBI強大的數據可視化呈現能力則圓滿地完成了本次對南京售房數據的統計和分析需求,絕對推薦!