一. 前言
房價永遠是最讓人頭疼且激動的話題,尤其是在帝都,多少人一輩子都為了一套房子打拼。正好我也想用一個大家比較關心的話題作為案例,把目前我開發的這套軟件進行一次完整的演練。從數據采集,到清洗,分析,和最終可視化和報告的呈現,實現一次完整的流程。一方面可以給大家切實的分享一些有用的信息,再者可以更好地了解這套軟件的使用流程。 關於本工具的介紹,可參考數據挖掘平台介紹(綜述)——平台簡介。
自然的,文章分為四部分,本節是第一部分:數據爬取和采集。
二. 准備工作
俗話說巧婦難為無米之炊,沒數據,分析就沒有了意義。為了找到合適的數據,我翻到了鏈家的官網。http://beijing.homelink.com.cn/ 這里的數據雖然遠遠算不上准確吧,畢竟掛在網上的東西和真實數據肯定會有差距,但可讀性很好,數據也比較全。我們就看看怎么去爬取這些數據吧!
鏈家官網:
總共的房源數是72964套在售,主要關心的數據是面積,價格,位置,特點,地理坐標,看房用戶等(反映熱度)。我們就看看能不能把這些數據抓到手!
本次介紹的網頁采集器有如下特點:
- 不需要寫正則表達式或者編寫代碼
- 只需要將感興趣的數據選中,並為其起名字(默認的名字亦可)
- 設置批量執行的方法即可執行批量采集
- 適合爬取列表型頁面
- 簡單方便,效率較高
- 能夠爬取動態網頁和需要登錄的網頁(這種操作稍微復雜一些)
首先把“網頁采集器”模塊拖放到算法處理器中:
下圖是 網頁采集器 的設置菜單:
首先 填寫URL路徑,為二手房的數據路徑,一般默認編碼為UTF-8, 程序中做了對編碼格式的識別功能。點擊訪問網頁:
即可在主窗口中,分別以原始HTML方式和瀏覽器方式瀏覽該網頁:
我一般會選用HTML 源代碼的方式查看數據。
將感興趣的數據,從HTML中拷貝到“篩選字段”對話框中,系統會自動查找對應的路徑
給屬性起個名字,比如“介紹” ,點擊添加字段,即可完成一個屬性的添加。
同樣的,可以把超鏈接也做同樣的處理,添加字段。
在選擇數據時,盡可能選擇比較有代表性的數據,同時,要把數據分布在列表的不同項中。
你可以隨時查看和修改添加的屬性,在高級選項中,點擊屬性列表:,即可查看當前添加的所有屬性,並進行增刪改查。
在選擇了五個感興趣的數據之后,可點擊“開始爬取”。此時程序會嘗試在本網頁上進行一次抓取,我們可通過這樣的嘗試判斷程序執行的准確性:
獲取了12項,同時點擊查看:
類似的,我們可以將其他包括樓層數,朝向等,都通過類似的方法進行添加。如果確實一些數據程序無法自動發現,可通過手寫XPATH進行解決。
3. 批量任務
添加了多達10個屬性,並進行網頁爬取測試后,我們認為程序設置沒有問題了,那就可以進行批量網頁爬取了。
具體的方法,可以設置批量任務屬性。 從網頁上看到,總共有6073頁:
同時,不同的頁面區別僅在URL的最后:
http://beijing.homelink.com.cn/ershoufang/pg2/
http://beijing.homelink.com.cn/ershoufang/pg6074/
所以批量參數可以寫成:
http://beijing.homelink.com.cn/ershoufang/{0}/ ,可以把需要替換的數字改為大括號括起來的形式。
加上10ms的延時。
將當前的爬蟲保存為一個任務,同時起名字為“鏈家爬蟲”
接下來,即可在菜單欄中, 運行->任務->啟動批量任務
選擇要執行的任務為“鏈家爬蟲”:
設置要遍歷的模塊為網頁采集器:
選取遍歷的參數:
設置參數列表:
可以在左側填寫間隔,最大值和最小值生成參數,同時也可以在右側,以每行一個參數填寫要遍歷的參數。我們生成的參數為1-6074
點擊完成,即可執行批量任務:
大概在兩小時后,即可爬取所有的數據~~~哈哈哈
查看一下戰果:
我們將數據導出成文件,方便下次進行分析。(也可以保存到數據庫)
選擇文件格式,填寫文件名:
選擇要導出的字段,和是否要修改字段的名稱:
點擊確定,即可將數據導出完畢。
任務完成!
三. 總結
這次戰果斐然,在兩小時內采集了七萬條數據,而整個配置的時間僅僅不到兩分鍾。但是必須發現,有很多數據是有問題的,比如面積和一些屬性為空,會對后期做數據分析造成影響。因此下一節我們介紹數據清洗工作,敬請期待。