# Hawk教程- 如何從互聯(lián)網采集海量數(shù)據(jù)?租房,二手房,薪酬

不少朋友看了沙漠君的分析文章之后,都會詢問我,那幾十萬條二手房,租房,薪酬,乃至天氣數(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頁。鏈家就是這樣:

image_1aiupdcdrt2pmsf14bjk87abk9.png-5.1kB

這也難不倒我們,每頁有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ù)大概長這樣:

image_1aiuq6o101sjl15as1nl9kh26ic1n.png-60.5kB

但你會看到,里面會有些奇怪的字符應該去去掉。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是開源的,所有代碼都經過了審查,是安全的。你的私密信息,只會躺在你自己的硬盤里。

![簡單的自動嗅探]](https://upload-images.jianshu.io/upload_images/9608527-9dffeb9ef37a45c7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

(我們就這樣自動登錄了大眾點評)

6.是不是我也可以抓數(shù)據(jù)了?

理論上是的,但道高一尺魔高一丈,不同的網站千差萬別,對抗爬蟲的技術也有很多種。而且爬蟲對細節(jié)非常敏感,只要錯一點,后面的步驟就可能進行不下去了。

怎么辦呢?沙漠君把之前的操作保存并分享出來,你只要加載這些文件就能快速獲取數(shù)據(jù)了。

如果你有其他網站的獲取需求,可以去找你身邊的程序員同學,讓他們來幫忙抓數(shù)據(jù),或讓他們來試試Hawk,看看誰的效率更高。

如果你是文科生或者是妹子,那還是建議你多看看東野奎吾和村上春樹,直接上手這么復雜的軟件會讓你抓狂的(已經有很多血淋淋的案例了)。

7.在哪里獲取軟件和教程?

軟件的教程和下載鏈接,可參考沙漠君的技術博客,在百度(黑)上面搜索“沙漠之鷹 博客園”,即可:


image_1aj0t276v15m6pd6eme1un815ia1d.png-170.1kB

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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容