最近又要租房了,哪裏的性價比更高?買房殊不知道全國市場的趨勢如何?程序員自有辦法,抓取網絡的房產交易和租房數據來分析啊!git
用Python寫起來麻煩,用商業軟件速度慢還收費,開源的圖形化爬蟲Hawk,已經在其任務市場裏內置了全國鏈家和我愛我家的工程任務。一鍵便可加載市場任務,一鍵在全國幾十個城市之間切換,還能一鍵導出數據到Excel,txt等各類文本類型,心動了麼?程序員
Hawk,由沙漠之鷹歷時五年我的業餘時間開發 ,從2015年開發至今,已經經歷三個版本,可是Hawk5則帶來了其歷史上最大的一次更新,並提供了社區化的任務市場,多國語言和更強大的調試系統。github
本文將手把手地讓您經過Hawk無需編程地抓取所有房產數據,並從中瞭解Hawk的設計思想和原理。若是你已是Hawk的用戶,能夠經過本文了解Hawk5的最新功能。web
本文面向程序猿同窗,一些常識再也不介紹,以後會對源代碼進行講解。更多的細節可參考使用文檔,有包含Hawk方方面面的信息。編程
GitHub主頁:https://github.com/ferventdesert/Hawk數組
使用文檔: https://ferventdesert.github.io/Hawk/網絡
下載地址: https://github.com/ferventdesert/Hawk/releases工具
國內下載地址: https://gitee.com/deserthawk/Hawk/attach_files線程
Hawk是綠色軟件,下載後雙擊Hawk.exe直接啓動,可能依賴於.Net Framework 4.5,系統提示時可自行下載安裝。設計
啓動後,在歡迎頁面有三個tab頁: 新建任務,任務市場和參數設置。歡迎頁面很是重要,可以新建任務,或者瀏覽相關文檔和幫助。
但本教程不介紹如何設計任務。咱們直接使用現有的任務市場。切換到任務市場,Hawk會訪問遠程git倉庫拉取任務列表(這可能須要一些時間)。
稍等片刻Hawk便可將遠程任務預覽出來。 其中包括教學工程,搜狐新聞等示例。
左側選擇鏈家全國地產
,該工程包括了抓取全國的二手房,新房,小區,租房信息,
在左側工程列表上點擊右鍵加載,便可加載鏈家的整個任務。(固然也能夠在右側任務列表上加載單個任務,Hawk只會加載它和它依賴的任務列表)。
在Hawk主界面右側是當前的狀態,包括三個區域:
在「已加載任務」中,雙擊任一欄目(此處咱們選擇鏈家在售
),Hawk就會在後臺執行實時抓取和計算,並將最終抓取結果預覽在當前頁面中,默認顯示的是北京的二手房信息。若是你但願預覽更多條數據,修改下方調試框的採樣量,點擊刷新便可。
是否是很方便?如何在多個城市間切換?如何將數據導出?不要着急,咱們先講解Hawk是如何工做的。
仍是以鏈家的二手房列表爲例,鏈家的頁面:
每頁有30條數據,但一個城市最多隻能顯示100頁。經過拼接URL最多也只能生成3000條數據。可是咱們獲取每一個區縣(如東城區,西城區)的地址,再經過每一個區縣獲取其每一個區域(如金融街,平安裏)的地址和二手房數量,這樣每一個區域的數量就不超過3000條了,咱們利用類目組合繞過100頁的抓取限制,進而能獲取當前城市所有的信息。
Hawk是經過多個模塊組合而成的工做流系統,左側顯示了當前任務所需的全部步驟模塊,點擊任意步驟,Hawk就會跳到該步並預覽結果,雙擊該模塊,就能查看模塊的配置。
在下方的調試欄中,還能夠勾選「調試詳情」,經過點擊上一步
和下一步
,可單步調試,在下方的調試輸出框中會顯示當前模塊的做用和參數。
剛纔是預覽模式,爲了保存所有數據,咱們已經在模塊列表的最下方拖入了寫入數據表
。其表名填的是鏈家北京二手房
。
在數據清洗左側的下方(保持默認參數,串行模式,延時值1000毫秒,不然會被封禁)點擊執行便可,Hawk會自動分配線程池,開始抓取信息。
抓取完畢後(大概須要50分鐘),若是你想取消任務,在右下角的「線程管理器」上,在「鏈家在售串行任務」上點擊右鍵,並點取消便可。
最後,在導出的數據表上,右鍵點擊另存爲
,導出到Excel便可。
很簡單,點擊任務列表中的鏈家租房
便可。 其餘操做和鏈家二手房
是一致的。
你會發現,幾乎全部的任務都依賴於一個「底層通用任務」,它抽象了二手房,租房,小區,新房的公共部分。Hawk使用子任務
實現任務間的互相調用。這樣可極大地節省設計所需的時間。
沙漠君我不是北京的,我想看其餘城市的!
咱們回到Hawk首頁,點擊任務市場
的參數設置。以下圖:
左側展現了當前系統全局的配置, 包括總的web請求數量等,右側是當前工程的全局設置。 程序猿朋友們都知道,這就是全局參數嘛。咱們在參數組選擇的下拉菜單中,選擇不一樣的城市,回到以前的數據清洗界面再次刷新,就會發現城市發生變化了!
這就是Hawk的全局參數配置系統,它經過yaml文件描述了一些鍵值對。在任務中,經過大括號,可以隨時引用全局參數中配置的信息。例如,你能夠在"底層通用任務"的第一個模塊「從文本生成」中看到{city}
,它表明讀取全局配置中city的值。
哈哈,我猜到了!Hawk內置了強大的文檔系統。每一個模塊都有詳細的使用介紹,並能在新手模式間切換。同時還可以自動生成幫助文檔,在任何一個數據清洗的任務中,點擊調試工具欄中的「問號」按鈕,便可彈出當前任務手把手的教程,你只要按照他的步驟一步步操做便可!
除了直接看自動生成的幫助文檔。能夠閱讀Hawk的教程,快速教程中提供了使用的簡要說明,幫助你快速上手。而示例教程中,給出了幾個經典例子的步驟。
Hawk有太多強大的特性能夠去講,例如強大的手氣不錯功能和超級模式,但本文旨在介紹Hawk5更新的功能。若是你感興趣,歡迎給本項目的GitHub點個star,並歡迎持續關注沙漠君的博客。若是你願意給Hawk作出貢獻,歡迎聯繫我!