相比於爬蟲框架,知乎小爬蟲,更加適合初學者,尤爲是想要了解爬蟲技術細節、實現本身編寫爬蟲需求的初學者。html
1. 談爬蟲工程師的價值redis
大數據時代已到,數據愈來愈具備價值了,沒有數據步履維艱,有了數據好好利用,能夠在諸多領域幹不少事,好比很火的互聯網金融。從互聯網上爬來本身想要的數據,是數據的一個重要來源,並且每每是必不可少的來源。全部,目前,爬蟲工程師是一個很是吃香的職位,工資每每都不低,就是要耐得住寂寞了。那爬蟲工程師的價值也就是能穩定的、高效的和實時的帶來數據。這裏推薦看兩篇文章:編程
http://www.hzzx.gov.cn/cshz/content/2014-08/25/content_5417124.htm設計模式
http://www.tuicool.com/articles/Fb6fy2f網絡
2. 爬蟲(或互聯網數據採集)怎麼入門框架
爬蟲能夠很快的入門,但要作的真正大神,還必須不斷實踐。由於,一旦真正爬數據的時候就會出現各類問題,由於爬蟲本質是一種對抗性的工做,你須要和反爬人員鬥智鬥勇。不過,這個過程會充滿無窮的樂趣,還會把你錘鍊成真正的爬蟲高手。工具
3. 專門爲爬蟲入門而寫的知乎爬蟲post
這裏,耗費了很多的業餘時間,專門爲爬蟲入門或初中級寫了一個知乎爬蟲。爲何選擇知乎呢?應爲這裏例子能夠儘可能多的將爬蟲涉及的技術點包含進去,同時又不至於那麼複雜,學習和提高兼顧。下面說明知乎爬蟲的源碼和涉及主要技術點:學習
(1)程序package組織大數據
(2)模擬登陸(爬蟲主要技術點1)
要爬去須要登陸的網站數據,模擬登陸是必要可少的一步,並且每每是難點。知乎爬蟲的模擬登陸能夠作一個很好的案例。要實現一個網站的模擬登陸,須要兩大步驟是:(1)對登陸的請求過程進行分析,找到登陸的關鍵請求和步驟,分析工具能夠有IE自帶(快捷鍵F12)、Fiddler、HttpWatcher;(2)編寫代碼模擬登陸的過程。
(3)網頁下載(爬蟲主要技術點2)
模擬登陸後,即可下載目標網頁html了。知乎爬蟲基於HttpClient寫了一個網絡鏈接線程池,而且封裝了經常使用的get和post兩種網頁下載的方法。
(4)自動獲取網頁編碼(爬蟲主要技術點3)
自動獲取網頁編碼是確保下載網頁html不出現亂碼的前提。知乎爬蟲中提供方法能夠解決絕大部分亂碼下載網頁亂碼問題。
(5)網頁解析和提取(爬蟲主要技術點4)
使用Java寫爬蟲,常見的網頁解析和提取方法有兩種:利用開源Jar包Jsoup和正則。通常來講,Jsoup就能夠解決問題,極少出現Jsoup不能解析和提取的狀況。Jsoup強大功能,使得解析和提取異常簡單。知乎爬蟲採用的就是Jsoup。
(6)正則匹配與提取(爬蟲主要技術點5)
雖然知乎爬蟲採用Jsoup來進行網頁解析,可是仍然封裝了正則匹配與提取數據的方法,由於正則還能夠作其餘的事情,如在知乎爬蟲中使用正則來進行url地址的過濾和判斷。
(7)數據去重(爬蟲主要技術點6)
對於爬蟲,根據場景不一樣,能夠有不一樣的去重方案。(1)少許數據,好比幾萬或者十幾萬條的狀況,使用Map或Set即可;(2)中量數據,好比幾百萬或者上千萬,使用BloomFilter(著名的布隆過濾器)能夠解決;(3)大量數據,上億或者幾十億,Redis能夠解決。知乎爬蟲給出了BloomFilter的實現,可是採用的Redis進行去重。
(8)設計模式等Java高級編程實踐
除了以上爬蟲主要的技術點以外,知乎爬蟲的實現還涉及多種設計模式,主要有鏈模式、單例模式、組合模式等,同時還使用了Java反射。除了學習爬蟲技術,這對學習設計模式和Java反射機制也是一個不錯的案例。
4. 一些抓取結果展現