用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. 一些抓取結果展示
特別提示
配置引數準確度
-
二十歲的某一天歌詞意思
《二十歲的某一天》是花粥專輯的第一首單曲,也是花粥幾年前最早被聽眾熟知的一系列歌曲之一。天橋邊的男女花五塊錢吃了一碗牛肉麵,然後故事會有怎樣?且聽花粥不動聲色娓娓道來。操作方法(01)花粥的歌,清新慵懶。二十歲的某一天,是其早期作品之一。其歌詞如下:20歲的某...
-
人民幣符號怎麼打¥ word插入人民幣符號?
人民幣符號怎麼打?我們在工作的時候,有時候需要在電腦上輸入“¥”這個人民幣符號,然而很多使用者不知道該怎麼輸入,這給工作帶來了很大的不便。其實人民幣符號的輸入方法很簡單,下面小編給大家介紹幾種輸入方法。操作方法(01)使用輸入法工具在中文狀態下,使用Shift+$/4鍵,...
-
微信openid獲取教程
用微信支付平臺發放紅包必須上傳使用者的微信openid,想要匯出微信openid可以按以下步驟來做。操作方法(01)進入微信openid匯出平臺,根據下圖1更新列表;2重新整理粉絲資訊;3匯出資料;(02)獲得的微信平臺openid資料如下(03)把openid拷貝到t型臺文件裡,格式如下。(04)匯入到微信商戶平...
-
谷歌瀏覽器語言設定,谷歌瀏覽器如何更改語言
谷歌瀏覽器語言怎麼設定,谷歌瀏覽器如何更改語言。雖然在國內,大多數人也都是用中文,但也不有少英語愛好者喜歡用外語,那麼下面我就來說下谷歌瀏覽器語言怎麼設定,谷歌瀏覽器如何更改語言。操作方法(01)首先點選開啟GoogleChrome瀏覽器。(02)點選開啟後,進入到我們最為習...