- GitHub文檔鏡像
- 歡迎使用Hawk
- 快速教程
- 主要組件介紹
- 核心功能:
- [模塊和算子]
- 常見問題
- 更新日志作者和捐贈列表
- 專題:
- 案例:
- 發(fā)布文章:
- 故事:
不少朋友看了沙漠君的分析文章之后,都會詢問我,那幾十萬條二手房,租房,薪酬,乃至天氣數(shù)據(jù),都是如何在十幾分鐘內采集到,而數(shù)據(jù)又是從哪里來的呢?
遇到這樣的問題,我會回答,我用專門的工具,不用編程也能快速抓取。之后肯定又會問,在哪里能下載這個工具呢?我淡淡的說,我自己寫的。。。
(這個B裝的...我給95分!)
[站外圖片上傳中...(image-a44118-1559995922987)]
沙漠君最近比較忙亂,說好的一大堆寫作任務都還沒有完成。授人以魚不如授人以漁,我做了一個決定,將這套軟件全部開源到GitHub!
從此以后,估計很多做爬蟲的工程師要失業(yè)了。因為我的目標是讓普通人也能使用,目標有點遠大,不過貌似距離不遠了。
這篇文章介紹爬蟲大概的原理,文章最后會有程序地址和使用說明。
1.什么是爬蟲
互聯(lián)網是一張大網,采集數(shù)據(jù)的小程序可以形象地稱之為爬蟲或者蜘蛛。但這樣的名字并不好聽,所以我給軟件起名為Hawk,指代為"鷹",能夠精確,快速地捕捉獵物。
爬蟲的原理很簡單,我們在訪問網頁時,會點擊翻頁按鈕和超鏈接,瀏覽器會幫我們請求所有的資源和圖片。所以,你可以設計一個程序,能夠模擬人在瀏覽器上的操作,讓網站誤認為爬蟲是正常訪問者,它就會把所需的數(shù)據(jù)返回回來。
爬蟲分為兩種,一種是什么都抓的搜索引擎型爬蟲,一般在百度(黑)這樣的公司中使用。另一種就是沙漠君開發(fā)的,只精確地抓取所需的內容,比如我只要二手房信息,旁邊的廣告和新聞一律不要。
這套軟件,可以基本不需編程,通過圖形化的操作來快速設計爬蟲,有點像Photoshop的意思。它能在20分鐘內編寫大眾點評的爬蟲(簡化版只要3分鐘),然后讓它運行就好啦~
軟件長這個樣子,(高端黑高端黑)
[站外圖片上傳中...(image-692315-1559995922987)]
2.自動將網頁導出為Excel
那么,一個頁面那么大,爬蟲怎么知道我想要什么呢?
[站外圖片上傳中...(image-921d30-1559995922987)]
人當然可以很容易地看出,上圖的紅框是二手房信息了,但機器不知道。網頁是一種有結構的樹,而重要信息所在的節(jié)點,往往枝繁葉茂。 舉個不恰當?shù)谋确?,一大家子人構成樹狀族譜,誰最厲害?當然是孩子多(能生),且孩子各個都很爭氣(孫子也很多),最好每個孩子都很像(N胞胎)的那個人,大家都會覺得他家太厲害了!
我們對整個樹結構進行評分,自然就能找到那個最牛的節(jié)點,這個節(jié)點就是我們要的表格。
找到最牛爺爺之后,兒子們雖然相似,都有共性:個子高,長得帥,兩條胳膊兩條腿,但這些是普遍現(xiàn)象,沒有信息量,我們關心的是特點。大兒子眼睛和其他人都不一樣,那眼睛就是重要信息,三兒子最有錢,錢也是我們關心的。
因此,對比兒子們的不同屬性,我們就能知道哪些信息是重要的了。
回到網頁采集這個例子,通過一套有趣的算法,給一個網頁的地址,軟件就會自動地把它轉成Excel!
(聽不懂吧?聽不懂正常, 不要在意這些細節(jié)!總之你知道這是沙漠君設計的就好了)
3.破解翻頁限制
獲取了一頁的數(shù)據(jù),這還不夠,我們要獲取所有頁面的數(shù)據(jù),這簡單,我們讓程序依次地請求第1頁,第2頁...數(shù)據(jù)就收集回來了。
就這么簡單嗎?網站怎么可能讓自己寶貴的數(shù)據(jù)被這么輕松地抓走呢?所以它只能翻到第50頁或第100頁。鏈家就是這樣:

這也難不倒我們,每頁有30個數(shù)據(jù),所以100頁最多能呈現(xiàn)3000個條數(shù)據(jù)。北京有16個區(qū)縣,每個區(qū)縣的小區(qū)數(shù)量肯定沒有3000個,所以我們可以獲取每個區(qū)縣的所有小區(qū)的列表。每個小區(qū)的二手房再多也沒有3000套(最多的小區(qū)可能有300多套在售二手房),這樣就能獲取鏈家的所有二手房了。
哈哈哈,是不是被沙漠君的機智所傾倒了?然后我們啟動抓取器,Hawk就會給每個子線程(可以理解為機器人)分配任務:給我抓取這個小區(qū)的所有二手房!
然后你就會看到壯觀的場面:一堆小機器人,同心協(xié)力地從網站上搬數(shù)據(jù),超牛迅雷有沒有?同時100個任務!上個廁所回來就抓完了。
[站外圖片上傳中...(image-2f77c7-1559995922987)]
4.清洗:識別并轉換內容
獲取的數(shù)據(jù)大概長這樣:

但你會看到,里面會有些奇怪的字符應該去去掉。xx平米應該都把數(shù)字提取出來。而售價,有的是373萬元,有的是2130000元,這些都很難處理。
沒關系!Hawk能夠自動識別所有的數(shù)據(jù):
- 發(fā)現(xiàn)面積那一列的亂碼,自動去掉
- 識別價格,并把所有的價格都轉換為萬元單位
- 發(fā)現(xiàn)美元,轉換為人民幣
- 發(fā)現(xiàn)日期,比如2014.12或2014年12.31,都能轉換為2014年12月31日
哈哈,然后你就能夠輕松地把這些數(shù)據(jù)拿去作分析了,純凈無污染!
5.破解需要登錄的網站
此處的意思當然不是去破解用戶名密碼,沙漠君還沒強到那個程度。
有些網站的數(shù)據(jù),都需要登錄才能訪問。這也難不倒我們。
當你開啟了Hawk內置了嗅探功能時,Hawk就像一個錄音機一樣,會記錄你對目標網站的訪問操作。之后它就會按需要將其重放出來,從而實現(xiàn)自動登錄。
你會不會擔心Hawk保存你的用戶名密碼?不保存怎么自動登錄呢?但是Hawk是開源的,所有代碼都經過了審查,是安全的。你的私密信息,只會躺在你自己的硬盤里。
(我們就這樣自動登錄了大眾點評)
6.是不是我也可以抓數(shù)據(jù)了?
理論上是的,但道高一尺魔高一丈,不同的網站千差萬別,對抗爬蟲的技術也有很多種。而且爬蟲對細節(jié)非常敏感,只要錯一點,后面的步驟就可能進行不下去了。
怎么辦呢?沙漠君把之前的操作保存并分享出來,你只要加載這些文件就能快速獲取數(shù)據(jù)了。
如果你有其他網站的獲取需求,可以去找你身邊的程序員同學,讓他們來幫忙抓數(shù)據(jù),或讓他們來試試Hawk,看看誰的效率更高。
如果你是文科生或者是妹子,那還是建議你多看看東野奎吾和村上春樹,直接上手這么復雜的軟件會讓你抓狂的(已經有很多血淋淋的案例了)。
7.在哪里獲取軟件和教程?
軟件的教程和下載鏈接,可參考沙漠君的技術博客,在百度(黑)上面搜索“沙漠之鷹 博客園”,即可:

第二個就是。最新版本已經公布在百度網盤里了。