用JAVA寫一個知乎爬蟲
用java來實現一個知乎爬蟲
操作方法
(01)這裏,耗費了不少的業餘時間,專門爲爬蟲入門或初中級寫了一個知乎爬蟲。爲什麼選擇知乎呢?應爲這裏例子可以儘量多的將爬蟲涉及的技術點包含進去,同時又不至於那麼複雜,學習和提升兼顧。下面說明知乎爬蟲的源碼和涉及主要技術點:(1)程序package組織
(02)(2)模擬登錄(爬蟲主要技術點1)要爬去需要登錄的網站數據,模擬登錄是必要可少的一步,而且往往是難點。知乎爬蟲的模擬登錄可以做一個很好的案例。要實現一個網站的模擬登錄,需要兩大步驟是:(1)對登錄的請求過程進行分析,找到登錄的關鍵請求和步驟,分析工具可以有IE自帶(快捷鍵F12)、Fiddler、HttpWatcher;(2)編寫代碼模擬登錄的過程。
(03)(3)網頁下載(爬蟲主要技術點2)模擬登錄後,便可下載目標網頁html了。知乎爬蟲基於HttpClient寫了一個網絡連接線程池,並且封裝了常用的get和post兩種網頁下載的方法。
(04)(4)自動獲取網頁編碼(爬蟲主要技術點3)自動獲取網頁編碼是確保下載網頁html不出現亂碼的前提。知乎爬蟲中提供方法可以解決絕大部分亂碼下載網頁亂碼問題。
(05)(5)網頁解析和提取(爬蟲主要技術點4)使用Java寫爬蟲,常見的網頁解析和提取方法有兩種:利用開源Jar包Jsoup和正則。一般來說,Jsoup就可以解決問題,極少出現Jsoup不能解析和提取的情況。Jsoup強大功能,使得解析和提取異常簡單。知乎爬蟲採用的就是Jsoup。
(06)(6)正則匹配與提取(爬蟲主要技術點5)雖然知乎爬蟲採用Jsoup來進行網頁解析,但是仍然封裝了正則匹配與提取數據的方法,因爲正則還可以做其他的事情,如在知乎爬蟲中使用正則來進行url地址的過濾和判斷。
(07)(7)數據去重(爬蟲主要技術點6)對於爬蟲,根據場景不同,可以有不同的去重方案。(1)少量數據,比如幾萬或者十幾萬條的情況,使用Map或Set便可;(2)中量數據,比如幾百萬或者上千萬,使用BloomFilter(著名的布隆過濾器)可以解決;(3)大量數據,上億或者幾十億,Redis可以解決。知乎爬蟲給出了BloomFilter的實現,但是採用的Redis進行去重。
(08)(8)設計模式等Java高級編程實踐除了以上爬蟲主要的技術點之外,知乎爬蟲的實現還涉及多種設計模式,主要有鏈模式、單例模式、組合模式等,同時還使用了Java反射。除了學習爬蟲技術,這對學習設計模式和Java反射機制也是一個不錯的案例。
(09)4. 一些抓取結果展示
特別提示
配置參數準確度
-
商用wifi路由器怎麼來設置?怎麼用呢?
不論是餐廳、咖啡廳、足療店,還是機場、商場,只要是人流量大、人羣密集的地方,WiFi已成爲人們連接互聯網的重要上網方式,它在爲人們提供便捷的移動網絡服務同時,也正潛移默化的改變着人們的上網習慣、消費習慣,讓人們更加依賴它。因此不少商家看到了可以藉助WiFi平臺...
-
移動現在都有什麼套餐
中國移動是國內最大的移動通信運營商。那麼移動現在都有什麼套餐呢?今天小編就來和大家介紹一下,希望對大家有所幫助。操作方法(01)全球通系列套餐:每月資費區間爲88至588元。(02)其中包含暢享套餐與無限尊享計劃套餐,後者可以提供一定數額的國際流量供用戶使用。(03)4G...
-
AVI格式視頻怎麼轉MP4
平時工作或者是生活中,有些視頻是AVI格式的,想要將它轉換爲MP4格式,那麼AVI格式視頻怎麼轉MP4呢?操作方法(01)要轉換視頻的格式,一般可以使用第三方軟件,如格式工廠,在桌面上找到它的快捷方式,打開它。(02)打開之後,來到如下圖所示的界面。(03)因爲是要將AVI格式的視頻轉換爲M...
-
絕地求生steam賬號如何和QQ綁定
絕地求生現在國服版即將開始了,那麼steam的賬號如何和qq進行綁定呢,綁定之後你原先的東西和等級都會原封不動的進入到國服版本,這個就是老兵的優勢,怎麼弄呢,在這裏和大家說一下操作方法(01)首選用steam登錄絕地求生,進入登錄界面的時候右上角有一個綁定qq領取好禮品,之...