大數(shù)據(jù)文章-數(shù)據(jù)抓取交流學習群成立啦! 想要跟大神級別的本文作者同群交流學習爬蟲? 想要跟小伙伴一起組團打怪爬下某網(wǎng)站并交流心得? 想獲取第一手數(shù)據(jù)抓取咨詢和工具? 點擊文末“閱讀原文”報名加入 ◆ ◆ ◆ 不少朋友都會問:幾十萬條租房,二手房,薪酬,乃至天氣數(shù)據(jù)都是從哪里來的?其實這些數(shù)據(jù)在十幾分鐘內(nèi)就可以采集到! 一般我會回答,我用專門的工具,無需編程也能快速抓取。之后肯定又會被問,在哪里能下載這個工具呢? 最近比較忙亂,說好的一大堆寫作任務都還沒有完成。授人以魚不如授人以漁,我做了一個決定,將這套軟件全部開源到GitHub。 免費使用,開放源代碼! 從此以后,估計很多做爬蟲的工程師要失業(yè)了。。。因為我的目標是讓普通人也能使用! 這篇文章介紹爬蟲大概的原理,文末會有程序地址。 ◆ ◆ ◆ 什么是爬蟲 什么是爬蟲 互聯(lián)網(wǎng)是一張大網(wǎng),采集數(shù)據(jù)的小程序可以形象地稱之為爬蟲或者蜘蛛。 爬蟲的原理很簡單,我們在訪問網(wǎng)頁時,會點擊翻頁按鈕和超鏈接,瀏覽器會幫我們請求所有的資源和圖片。所以,你可以設(shè)計一個程序,能夠模擬人在瀏覽器上的操作,讓網(wǎng)站誤認為爬蟲是正常訪問者,它就會把所需的數(shù)據(jù)乖乖送回來。 爬蟲分為兩種,一種像百度(黑)那樣什么都抓的搜索引擎爬蟲。另一種就是開發(fā)的,只精確地抓取所需的內(nèi)容:比如我只要二手房信息,旁邊的廣告和新聞一律不要。 爬蟲這樣的名字并不好聽,所以我給這套軟件起名為Hawk,指代為'鷹',能夠精確,快速地捕捉獵物。 基本不需編程,通過圖形化拖拽的操作來快速設(shè)計爬蟲,有點像Photoshop。它能在20分鐘內(nèi)編寫大眾點評的爬蟲(簡化版只需3分鐘),然后讓它運行就好啦、 下面是使用Hawk抓取二手房的視頻,建議在wifi環(huán)境下觀看: ◆ ◆ ◆ 自動將網(wǎng)頁導出為Excel 那么,一個頁面那么大,爬蟲怎么知道我想要什么呢? 人當然可以很容易地看出,上圖的紅框是二手房信息,但機器不知道。 網(wǎng)頁是一種有結(jié)構(gòu)的樹,而重要信息所在的節(jié)點,往往枝繁葉茂。 舉個不恰當?shù)谋确?,一大家子人?gòu)成樹狀族譜,誰最厲害?當然是:
大家就會覺得這一家子太厲害了! 我們對整個樹結(jié)構(gòu)進行打分,自然就能找到那個最牛的節(jié)點,就是我們要的表格。找到最牛爸爸之后,兒子們雖然相似:個子高,長得帥,兩條胳膊兩條腿,但這些都是共性,沒有信息量,我們關(guān)心的是特性。大兒子錐子臉,跟其他人都不一樣,那臉蛋就是重要信息;三兒子最有錢——錢也是我們關(guān)心的。 因此,對比兒子們的不同屬性,我們就能知道哪些信息是重要的了。 回到網(wǎng)頁采集這個例子,通過一套有趣的算法,給一個網(wǎng)頁的地址,軟件就會自動地把它轉(zhuǎn)成Excel! (聽不懂吧?聽不懂正常, 不要在意這些細節(jié)!) ◆ ◆ ◆ 破解翻頁限制 獲取了一頁的數(shù)據(jù),這還不夠,我們要獲取所有頁面的數(shù)據(jù)!這簡單,我們讓程序依次地請求第1頁,第2頁...數(shù)據(jù)就收集回來了 就這么簡單嗎?網(wǎng)站怎么可能讓自己寶貴的數(shù)據(jù)被這么輕松地抓走呢?所以它只能翻到第50頁或第100頁。鏈家就是這樣: 這也難不倒我們,每頁有30個數(shù)據(jù),100頁最多能呈現(xiàn)3000條數(shù)據(jù)。北京有16個區(qū)縣兩萬個小區(qū),但每個區(qū)的小區(qū)數(shù)量就沒有3000個了,我們可分別獲取每個區(qū)的小區(qū)列表。每個小區(qū)最多有300多套在售二手房,這樣就能獲取鏈家的所有二手房了。 然后我們啟動抓取器,Hawk就會給每個子線程(可以理解為機器人)分配任務:給我抓取這個小區(qū)的所有二手房! 然后你就會看到壯觀的場面:一堆小機器人,同心協(xié)力地從網(wǎng)站上搬數(shù)據(jù),超牛迅雷有沒有?同時100個任務??!上個廁所回來就抓完了?。?! ◆ ◆ ◆ 清洗:識別并轉(zhuǎn)換內(nèi)容 但你會看到,里面會有些奇怪的字符應該去去掉。xx平米應該都把數(shù)字提取出來。而售價,有的是2130000元,有的是373萬元,這些都很難處理。
哈哈,然后你就能夠輕松地把這些數(shù)據(jù)拿去作分析了,純凈無污染! ◆ ◆ ◆ 破解需要登錄的網(wǎng)站 此處的意思當然不是去破解用戶名密碼,還沒強到那個程度。 有些網(wǎng)站的數(shù)據(jù),都需要登錄才能訪問。這也難不倒我們。 當你開啟了Hawk內(nèi)置了嗅探功能時,Hawk就像一個錄音機一樣,會記錄你對目標網(wǎng)站的訪問操作。之后它就會將其重放出來,從而實現(xiàn)自動登錄。 你會不會擔心Hawk保存你的用戶名密碼?不保存怎么自動登錄呢?但是Hawk是開源的,所有代碼都經(jīng)過了審查,是安全的。你的私密信息,只會躺在你自己的硬盤里。 (我們就這樣自動登錄了大眾點評) ◆ ◆ ◆ 是不是我也可以抓數(shù)據(jù)了 理論上是的。但道高一尺魔高一丈,不同的網(wǎng)站千差萬別,對抗爬蟲的技術(shù)也有很多種。而且小蟲蟲對細節(jié)非常敏感,只要錯一點,后面的步驟就可能進行不下去了。 怎么辦呢?沙漠君把之前的操作保存并分享出來,你只要加載這些文件就能快速獲取數(shù)據(jù)了。 如果你有其他網(wǎng)站的獲取需求,可以去找你身邊的程序員同學,讓他們來幫忙抓數(shù)據(jù),或讓他們來試試Hawk,看看誰的效率更高。 如果你是文科生妹子,那還是建議你多看看東野奎吾和村上春樹,直接上手這么復雜的軟件會讓你抓狂的。那該找誰幫忙抓數(shù)據(jù)呢?嘿嘿嘿... ◆ ◆ ◆ 在哪里獲取軟件和教程? Hawk: Advanced Crawler& ETL tool written in C#/WPF軟件介紹HAWK是一種數(shù)據(jù)采集和清洗工具,依據(jù)GPL協(xié)議開源,能夠靈活,有效地采集來自網(wǎng)頁,數(shù)據(jù)庫,文件, 并通過可視化地拖拽,快速地進行生成,過濾,轉(zhuǎn)換等操作。其功能最適合的領(lǐng)域,是爬蟲和數(shù)據(jù)清洗。 Hawk的含義為“鷹”,能夠高效,準確地捕殺獵物。 HAWK使用C# 編寫,其前端界面使用WPF開發(fā),支持插件擴展。通過圖形化操作,能夠快速建立解決方案。 GitHub地址:https://github.com/ferventdesert/Hawk 其Python等價的實現(xiàn)是etlpy: http://www.cnblogs.com/buptzym/p/5320552.html 筆者專門為其開發(fā)的工程文件已公開在GitHub: https://github.com/ferventdesert/Hawk-Projects 使用時,點擊文件,加載工程即可加載。 不想編譯的話,可執(zhí)行文件在: http://pan.baidu.com/s/1c8zBiQ 密碼:4iy0 編譯路徑在: 感謝作者授權(quán)轉(zhuǎn)載,稿件部分有變動,作者在大數(shù)據(jù)文摘的其他投稿點擊文末推薦文章查看。 |
|
感谢您访问我们的网站,您可能还对以下资源感兴趣:
日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区