用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. 一些抓取結果展示
特別提示
配置參數準確度
-
金萬維動態域名教程
現如今有很多nat123、金萬維等類似的建站軟件,那麼怎麼用金萬維獲得屬於自己的動態域名呢?操作方法(01)登陸金萬維服務器端,進入配置界面,點擊配件許可證,然後點擊“點擊申請試用賬號”。(02)按提示輸入相關信息,完成註冊。註冊完成後,一般建議勾選“啟動動態域名解析”,這...
-
谷歌瀏覽器語言設置,谷歌瀏覽器如何更改語言
谷歌瀏覽器語言怎麼設置,谷歌瀏覽器如何更改語言。雖然在國內,大多數人也都是用中文,但也不有少英語愛好者喜歡用外語,那麼下面我就來説下谷歌瀏覽器語言怎麼設置,谷歌瀏覽器如何更改語言。操作方法(01)首先點擊打開GoogleChrome瀏覽器。(02)點擊打開後,進入到我們最為習...
-
怎樣使用搜狗微信公眾平台搜索教程
2014年06月9日微信正式開啟搜索時代。用户可以在電腦上搜索微信公共號和文章;大大加快了微信公眾平台的曝光度和傳播速度。下面講下怎樣使用微信搜索引擎。操作方法(01)打開搜狗微信搜索();如下圖:(02)輸入想要搜索的微信公眾平台;例如:思維與邏輯;如下圖:(03)輸入完成之後,點...
-
word中替換功能的六個實用技巧
在這個講效率的年代,word的使用也需要效率,那麼,我們怎麼才能使word的使用也有效率呢,這就需要我們在平時多積累一些實用小技巧,但如何能夠更加了解word各個功能的使用技巧呢?那下面我們就以Word中替換功能為例,詳細講解它的6個技巧。操作方法(01)第一、去除word裏括號...