趙綠草 饒佳冬



摘要:隨著海量數據的出現,如何快速有效的獲取到我們想要的數據成為難題。以房源信息為例,該文使用Python語言結合Scrapy分布式爬蟲來對房源信息網——鏈家網上在售二手房數據進行爬取,解讀武漢市的二手數據背后隱藏的房源趨勢。
關鍵詞:Scrapy;爬蟲;Python;可視化分析
中圖分類號:TP391? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)19-0001-03
1 背景
近年來,大數據、互聯網和云計算等技術發展迅速,“智慧城市”建設進程加快,越來越多的實物用數據代為表示,用數據來反映問題成為一種直觀又具有說服力的方式。如今,大部分地區已進入城市化進程,人口的眾多與住房用地的減少使得房價大漲,如何找到合適的住房已成為常見的民生難題。
互聯網為用戶提供了各種房源數據,在爬蟲的爬取下集中有用的數據,并對這些數據進行清洗、統計和可視化分析,可以為用戶挖掘出隱藏在網絡數據中的所有房源的分布情況以及價格等特征走向,幫助用戶做出更好的決策。
2 Scrapy分布式爬蟲
Scrapy是一種用于抓取網站和提取結構化數據的應用程序框架,可廣泛應用于信息處理,數據挖掘或歷史存檔。最初Scrapy是為網絡抓取而設計的,但它也可以用于使用API或者作為通用網絡爬蟲來提取數據[1]。
Scrapy是基于Twisted異步網絡庫來處理通訊, 架構清晰, 并且包含了各種中間件接口, 可以靈活的完成各種需求。其工作原理為:首先從首頁URL開始, 調度器會傳給下載器進行下載, 之后會交給爬蟲進行分析, 根據分析結果進行不同處理。如果是需要進一步爬取的鏈接, 這些鏈接會傳回調度器;如果是需要保存的數據, 則被送到項目管道組件進行后期處理, 包括詳細分析、過濾、存儲等。此外, 在數據流動的通道里還允許安裝各種中間件, 進行必要的處理[1]。
3 Scrapy爬取及數據清洗
3.1 Scrapy爬取數據
打開cmd命令窗口,在常用文件夾下建立新的Scrapy爬蟲工程,設置爬取首頁和爬蟲名稱,便有了一個spiders文件夾及其目錄結構,使用配置有python3.6的pycharm打開我們所建立的爬蟲工程開始正式編寫爬蟲。
然后轉到爬蟲模塊,定位房源字段信息,在parse()方法中對這些信息的源代碼進行復制解析,利用for循環從第一頁開始進行翻頁,回調parse()方法,對每一頁的信息進行同樣的提取,直到最后一頁。最后數據爬取完成,轉到管道模塊,將爬取的全網二手房數據轉換為json純文本寫入到csv文件存儲。
3.2 數據清洗
數據清洗是對所爬取的數據進行規范化操作,將數據中多余的符號及字符做刪除或者替換處理,并且通過使用正則表達式等工具對數據進行一致性處理的過程。由于爬取出來的數據很亂,有各種換行符,制表符以及空格隱藏在數據中,或者是字段出現錯位,存在缺失值異常值等情況,因此需要先將數據進行清洗補充缺失數據等數據處理再進行探索分析。
首先用split()和drop()方法將含有多條信息的一列分成多列,pandas.concat()合并數據。然后通過正則表達式處理數據中影響分析的字符,re.sub()刪除指定字符,re.findall()提取指定字符。最后刪掉不必要的數據,將一些不規范的數據替換掉,例如年份一列中有“未知”字段,屬于字符型,為了便于后續分析,我們將“未知”兩個字替換為整型。
4 數據可視化分析
4.1 簡單概括性分析
數據初步清洗完畢,進行分析之前先檢查一下數據缺失情況,如果數據缺失嚴重,需要對缺失值進行填補或者其他處理,否則會影響數據分析結果準確性。檢查結果如圖3,從圖中可以看出數據沒有嚴重缺失,再對數據做描述性統計分析如圖4,可以看出武漢市二手房的價格均值約為212.6萬,平均面積102.8平方米,兩者相除得出的每平米均價約2萬多,與統計結果中每平米單價的均價基本一致,說明該數據異常值不明顯,可以進行數據可視化。
4.2 可視化分析
數據可視化技術將數據轉換成圖形圖表, 為決策提供依據[2]。數據可視化技術的研究已得到了快速發展并取得相應的成就[3]。
對武漢市每個區域二手房數量進行分析并且分析每個區域二手房每平米單價均值和總價箱形圖,可視化結果分別如圖5和6。
從圖5可以觀察到武漢洪山區二手房數量最多,遠遠高于其他區域,但是房屋每平米價格卻不是最高的,武昌區二手房每平米單價均值最高,可能是因為武昌屬于中心位置,同時占據交通和經濟兩大優勢。另外,通過6的箱型圖結果可以得出,武漢各區房屋總價中位數都在300萬以下,而且房屋總價分布趨勢比較分散,最高的是洪山區,房屋總價達到了1400萬,最低的不到100萬,說明房屋價格特征不是理想的正太分布。
通過distplot和kdeplot繪制柱狀圖并給出標準擬合正態分布,觀察武漢市二手房面積分布情況如圖7,可以看出房子面積分布與標準正態分布大部分擬合,說明我們觀測的大部分二手房面積在正常范圍之內,面積90平米左右的二手房最多,還有一些面積大于200平米超出正常范圍的二手房。再以有無電梯為分類依據繪制面積和價格之間的散點圖,如圖8,發現整體上面積特征基本與價格呈現線性關系,同樣面積的二手房有電梯比無電梯價格高,符合基本常識,面積越大,有電梯,價格越高。
5 總結
隨著信息技術越來越成熟,如何使用爬蟲和數據可視化等技術更好地了解用戶以及他們的意向是WEB2.0時代的關鍵領域。本文通過研究如何從互聯網上采集相關數據,讓數據采集更高效,把采集到的數據進行清洗、過濾,將有用的數據進行統計和可視化分析,從中分析和挖掘出有價值的信息[4],充分利用大數據潛在的價值。
參考文獻:
[1] 晉振杰, 曹少中, 項宏峰, 等. 基于python的電商書籍數據爬蟲研究[J]. 北京印刷學院學報, 2018, 3(26): 39-42.
[2] 曾悠. 大數據時代背景下的數據可視化概念研究[D]. 杭州: 浙江大學, 2014.
[3] 任磊, 杜一, 馬帥, 等. 大數據可視分析綜述[J]. 軟件學報, 2014, 25(9): 1909-1936.
[4] 肖樂, 叢天偉, 嚴衛. 基于python的Web大數據采集和數據分析[J]. 電腦知識與技術, 2018, 14(22): 9-11.
【通聯編輯:謝媛媛】