發表於2024-12-22
大多數網絡爬蟲的開發原理與技巧在專業的公司內部都秘而不宣,至今仍然缺少理論與實踐相結閤的專門介紹網絡爬蟲的書籍。《自己動手寫網絡爬蟲(修訂版 配光盤)》嘗試理論與實踐相結閤,深入透徹地講解網絡爬蟲的原理並且輔以相關代碼作為參考。
《自己動手寫網絡爬蟲(修訂版 配光盤)》介紹瞭網絡爬蟲開發中的關鍵問題與Java實現。主要包括從互聯網獲取信息與提取信息和對Web信息挖掘等內容。《自己動手寫網絡爬蟲(修訂版 配光盤)》在介紹基本原理的同時注重輔以具體代碼實現來幫助讀者加深理解,書中部分代碼甚至可以直接使用。
《自己動手寫網絡爬蟲(修訂版 配光盤)》適用於有Java程序設計基礎的開發人員。同時也可以作為計算機相關專業本科生或研究生的參考教程。
羅剛,計算機軟件碩士,畢業於吉林工業大學。2005年創立北京盈智星科技發展有限公司,2008年聯閤創立上海數聚軟件公司。獵兔搜索創始人,當前獵兔搜索在北京、上海以及石傢莊均設有研發部。他帶領獵兔搜索技術開發團隊先後開發齣獵兔中文分詞係統、獵兔文本挖掘係統,智能垂直搜索係統以及網絡信息監測係統等,實現互聯網信息的采集、過濾、搜索和實時監測,其開發的搜索軟件日用戶訪問量萬次以上。
第1篇 自己動手抓取數據
第1章 全麵剖析網絡爬蟲 3
1.1 抓取網頁 4
1.1.1 深入理解URL 4
1.1.2 通過指定的URL抓取
網頁內容 6
1.1.3 Java網頁抓取示例 8
1.1.4 處理HTTP狀態碼 10
1.2 寬度優先爬蟲和帶偏好的爬蟲 12
1.2.1 圖的寬度優先遍曆 12
1.2.2 寬度優先遍曆互聯網 13
1.2.3 Java寬度優先爬蟲示例 15
1.2.4 帶偏好的爬蟲 22
1.2.5 Java帶偏好的爬蟲示例 23
1.3 設計爬蟲隊列 24
1.3.1 爬蟲隊列 24
1.3.2 使用Berkeley DB構建爬蟲
隊列 29
1.3.3 使用Berkeley DB 構建爬蟲
隊列示例 30
1.3.4 使用布隆過濾器構建
Visited錶 36
1.3.5 詳解Heritrix爬蟲隊列 39
1.4 設計爬蟲架構 46
1.4.1 爬蟲架構 46
1.4.2 設計並行爬蟲架構 47
1.4.3 詳解Heritrix爬蟲架構 52
1.5 使用多綫程技術提升爬蟲性能 55
1.5.1 詳解Java多綫程 55
1.5.2 爬蟲中的多綫程 59
1.5.3 一個簡單的多綫程爬蟲實現 60
1.5.4 詳解Heritrix多綫程結構 61
本章小結 64
第2章 分布式爬蟲 69
2.1 設計分布式爬蟲 70
2.1.1 分布式與雲計算 70
2.1.2 分布式與雲計算技術在
爬蟲中的應用--淺析
Google的雲計算架構 72
2.2 分布式存儲 72
2.2.1 從Ralation_DB到key/value
存儲 72
2.2.2 Consistent Hash算法 74
2.2.3 Consistent Hash代碼實現 79
2.3 Google的成功之道--GFS 80
2.3.1 GFS詳解 80
2.3.2 開源GFS--HDFS 84
2.4 Google網頁存儲秘訣--BigTable 88
2.4.1 詳解BigTable 88
2.4.2 開源BigTable-HBase 93
2.5 Google的成功之道--
MapReduce算法 98
2.5.1 詳解MapReduce算法 100
2.5.2 MapReduce容錯處理 101
2.5.3 MapReduce實現架構 102
2.5.4 Hadoop中的MapReduce
簡介 104
2.5.5 wordCount例子的實現 105
2.6 Nutch中的分布式 109
2.6.1 Nutch爬蟲詳解 109
2.6.2 Nutch中的分布式 116
本章小結 118
第3章 爬蟲的"方方麵麵" 121
3.1 爬蟲中的"黑洞" 122
3.2 主題爬蟲和限定爬蟲 122
3.2.1 理解主題爬蟲 122
3.2.2 Java主題爬蟲 128
3.2.3 理解限定爬蟲 130
3.2.4 Java限定爬蟲示例 136
3.3 有"道德"的爬蟲 152
本章小結 156
第2篇 自己動手抽取Web內容
第4章 "處理"HTML頁麵 159
4.1 徵服正則錶達式 160
4.1.1 學習正則錶達式 160
4.1.2 Java正則錶達式 163
4.2 抽取HTML正文 169
4.2.1 瞭解Jsoup 169
4.2.2 使用正則錶達式抽取示例 173
4.3 抽取正文 177
4.4 從JavaScript中抽取信息 193
4.4.1 JavaScript抽取方法 193
4.4.2 JavaScript抽取示例 195
本章小結 197
第5章 非HTML正文抽取 199
5.1 抽取PDF文件 200
5.1.1 學習PDFBox 200
5.1.2 使用PDFBox抽取示例 204
5.1.3 提取PDF文件標題 205
5.1.4 處理PDF格式的公文 206
5.2 抽取Office文檔 211
5.2.1 學習POI 211
5.2.2 使用POI抽取Word示例 211
5.2.3 使用POI抽取PPT 示例 213
5.2.4 使用POI抽取Excel示例 214
5.3 抽取RTF 217
5.3.1 開源RTF文件解析器 217
5.3.2 實現一個RTF文件解析器 217
5.3.3 解析RTF示例 222
本章小結 227
第6章 多媒體抽取 229
6.1 視頻抽取 230
6.1.1 抽取視頻關鍵幀 230
6.1.2 Java視頻處理框架 231
6.1.3 Java視頻抽取示例 235
6.2 音頻抽取 247
6.2.1 抽取音頻 248
6.2.2 Java音頻抽取技術 252
本章小結 254
第7章 去掉網頁中的"噪聲" 255
7.1 "噪聲"對網頁的影響 256
7.2 利用"統計學"消除"噪聲" 257
7.2.1 網站風格樹 260
7.2.2 "統計學去噪"的
Java實現 268
7.3 利用"視覺"消除"噪聲" 272
7.3.1 "視覺"與"噪聲" 272
7.3.2 "視覺去噪"的Java實現 273
本章小結 277
第3篇 自己動手挖掘Web數據
第8章 分析Web圖 281
8.1 存儲Web"圖" 282
8.2 利用Web"圖"分析鏈接 291
8.3 Google的秘密--PageRank 291
8.3.1 深入理解PageRank算法 291
8.3.2 PageRank算法的Java實現 295
8.3.3 應用PageRank進行鏈接
分析 298
8.4 PageRank 的兄弟HITS 299
8.4.1 深入理解HITS算法 299
8.4.2 HITS算法的Java實現 300
8.4.3 應用HITS進行鏈接分析 311
8.5 PageRank與HITS比較 312
本章小結 313
第9章 去掉"重復"的文檔 315
9.1 何為"重復"的文檔 316
9.2 利用"語義指紋"排重 316
9.2.1 理解"語義指紋" 318
9.2.2 "語義指紋"排重的
Java實現 319
9.3 SimHash排重 319
9.3.1 理解SimHash 320
9.3.2 SimHash排重的Java實現 321
9.4 分布式文檔排重 328
本章小結 329
第10章 分類與聚類的應用 331
10.1 網頁分類 332
10.1.1 收集語料庫 332
10.1.2 選取網頁的"特徵" 333
10.1.3 使用支持嚮量機進行
網頁分類 336
10.1.4 利用URL地址進行
網頁分類 338
10.1.5 使用AdaBoost進行
網頁分類 338
10.2 網頁聚類 341
10.2.1 深入理解DBScan算法 341
10.2.2 使用DBScan算法聚類
實例 342
本章小結 344
第2章 分布式爬蟲
隨著互聯網技術的發展以及風起雲湧的雲計算浪潮,爬蟲技術也逐漸嚮分布式方嚮發展。比如,Google的爬蟲就是使用成韆上萬颱小型機和微機進行閤作,完成分布式抓取工作的。分布式技術不僅可以解決IT運營的成本,還可以解決爬蟲效率問題,尤其是當今雲計算的熱潮,更把分布式推嚮瞭極緻。
2.1 設計分布式爬蟲
把抓取任務分布到不同的節點主要是為瞭抓取性能與可擴展性,也可以使用物理分布的爬蟲係統,讓每個爬蟲節點抓取靠近它的網站。例如,北京的爬蟲節點抓取北京的網站,上海的爬蟲節點抓取上海的網站,電信網絡中的爬蟲節點抓取托管在電信的網站,聯通網絡中的爬蟲節點抓取托管在聯通的網站。
此外,還需要考慮容錯。如果一個節點X崩潰(或優雅地離開),我們可以通過查找任務緩存,知道分配給它哪些任務。這次X的任務要由其他的節點來重新執行。
2.1.1 分布式與雲計算
分布式技術是一種基於網絡的計算機處理技術,與集中式相對應。近些年來,由於個人計算機的性能得到極大的提高及其使用的普及,使得將處理任務分布到網絡上的所有計算機成為可能。分布式計算是和集中式計算相對立的概念,分布式計算的數據可以分布在很大區域去完成。
在分布式網絡中,數據的存儲和處理都是在本地工作站進行的。數據輸齣可以打印,也可以保存在軟盤上。通過網絡能夠更快、更便捷地訪問數據。因為每颱計算機都能夠存儲和處理數據,所以不要求服務器的功能十分強大,其價格也就不必過於昂貴。這種類型的網絡可以適應用戶的各種需要,同時允許他們共享網絡的數據、資源和服務。在分布式網絡中使用的計算機既能夠作為獨立的係統使用,也可以把它們連接在一起獲得更強大的網絡功能。
分布式計算的優點是可以快速訪問、多用戶使用。每颱計算機可以訪問係統內其他計算機的信息文件,係統設計上具有更大的靈活性。既可為獨立計算機的地區用戶的特殊需求服務,也可為聯網的企業需求服務,實現係統內不同計算機之間的通信,每颱計算機都可以擁有和保持所需要的最大數據和文件,減少瞭數據傳輸的成本和風險。為分散地區和中心辦公室雙方提供更迅速的信息通信和處理方式,為每個分散的數據庫提供作用域,數據存儲於許多存儲單元中,但任何用戶都可以進行全局訪問,使故障的不利影響最小化,以較低的成本來滿足企業的特定要求。
雲計算(Cloud Computing)是分布式處理(Distributed Computing)、並行處理(Parallel Computing)和網格計算(Grid Computing)的發展,或者說是這些計算機科學概念的商業實現。
雲計算的基本原理是,通過使計算任務分布在大量的分布式計算機上,而非本地計算機或遠程服務器中,企業數據中心的運行將與互聯網更相似。這使得企業能夠將資源切換到需要的應用上,從而根據需求訪問計算機和存儲係統。
這可是一種革命性的舉措,打個比方,就好比是從古老的單颱發電機模式轉嚮瞭電廠集中供電的模式。它意味著計算能力也可以作為一種商品進行流通,就像煤氣、水電一樣,使用方便,費用低廉。最大的不同在於,它是通過互聯網進行傳輸的。
雲計算的藍圖已經呼之欲齣:在未來,隻需要一颱筆記本或者一個手機,就可以通過網絡服務來實現我們需要的一切,甚至包括超級計算這樣的任務。從這個角度而言,最終用戶纔是雲計算的真正擁有者。
雲計算的應用包含這樣一種思想,把力量聯閤起來,給其中的每一個成員使用。
目前,PC依然是我們日常工作生活中的核心工具--我們用PC處理文檔、存儲資料,用電子郵件或U盤與他人分享信息。如果PC硬盤壞瞭,我們會因為資料丟失而束手無策。
而在雲計算時代,"雲"會替我們做存儲和計算的工作。"雲"就是計算機群,每一群都包括幾十萬颱,甚至上百萬颱計算機。"雲"的好處還在於,其中的計算機可以隨時更新,保證"雲"長生不老。Google就有好幾個這樣的"雲",其他IT巨頭,如微軟、雅虎、亞馬遜(Amazon)也有或正在建設這樣的"雲"。
屆時,我們隻需要一颱能上網的電腦,不需關心存儲或計算發生在哪朵"雲"上,一旦有需要,我們可以在任何地點用任何設備,如電腦、手機等,快速地計算和找到這些資料。我們再也不用擔心資料會丟失瞭。
雲計算是虛擬化(Virtualization)、效用計算(Utility Computing)、IaaS(基礎設施即服務)、PaaS(平颱即服務)、SaaS(軟件即服務)等概念混閤演進並躍升的結果。雲計算的特點如下:
* 超大規模。Google雲計算已經擁有100多萬颱服務器,Amazon、IBM、微軟、Yahoo等的"雲"均擁有幾十萬颱服務器。企業私有雲一般擁有數百至上韆颱服務器。"雲"能賦予用戶前所未有的計算能力。
* 虛擬化。雲計算支持用戶在任意位置、使用各種終端獲取應用服務。所請求的資源來自"雲",而不是固定的、有形的實體。應用在"雲"中某處運行,但實際上用戶無需瞭解、也不用擔心應用運行的具體位置。隻需要一颱筆記本或者一個手機,就可以通過網絡服務來實現我們需要的一切,甚至包括超級計算這樣的任務。
* 高可靠性。"雲"使用瞭數據多副本容錯、計算節點同構可互換等措施來保障服務的高可靠性,使用雲計算比使用本地計算機可靠。
* 通用性。雲計算不針對特定的應用,在"雲"的支撐下可以構造齣韆變萬化的應用,同一個"雲"可以同時支撐不同的應用運行。
* 高可擴展性。"雲"的規模可以動態伸縮,以滿足應用和用戶規模增長的需要。
* 按需服務。"雲"是一個龐大的資源池,可以按需購買;雲可以像自來水、電、煤氣那樣計費。
* 極其廉價。由於"雲"的特殊容錯措施可以采用極其廉價的節點來構成雲,"雲"的自動化集中式管理使得大量企業無需負擔日益高昂的數據中心管理成本,"雲"的通用性使資源的利用率較之傳統係統大幅提升,因此用戶可以充分享受"雲"的低成本優勢,通常隻要花費幾百美元、幾天時間就能完成以前需要數萬美元、數月時間纔能完成的任務。
……
前 言
當你在網上衝浪時,你是否知道還有一類特殊的網絡用戶也在互聯網上默默地工作著,它們就是網絡爬蟲。這些網絡爬蟲按照設計者預定的方式,在網絡中穿梭,同時自動收集有用的信息,進行分類和整理,將整理結果提供給用戶,以方便用戶查找他們感興趣的內容。由於網絡爬蟲的實用性,引起瞭很多程序員,特彆是Web程序員的興趣。
但是大多數網絡爬蟲的開發原理與技巧在專業的公司內部都秘而不宣,至今仍然缺少理論與實踐相結閤的專門介紹網絡爬蟲的書籍。本書嘗試理論與實踐相結閤,深入透徹地講解網絡爬蟲的原理,並且輔以相關代碼作為參考。本書相關的代碼在附帶光盤中可以找到。
本書的兩位主要作者在搜索引擎領域都有豐富的理論和實踐經驗。同時,還有多個程序員幫忙開發或編寫瞭代碼實現,例如Java實現異步I/O或對PDF文件的處理等。由於作者的日常工作繁忙,做得不夠的地方敬請諒解。
作者羅剛在參加編寫本書之前,還閤作撰寫過《解密搜索引擎技術實戰》一書,但存在講解不夠細緻、知識點不夠深入等問題。此次修訂,對一些過時的內容進行瞭更新。
本書從基本的爬蟲原理開始講解,通過介紹優先級隊列、寬度優先搜索等內容引領讀者入門;之後根據當前風起雲湧的雲計算熱潮,重點講述瞭雲計算的相關內容及其在爬蟲中的應用,以及帶偏好的爬蟲、信息抽取、鏈接分析等內容;為瞭能夠讓讀者更深入地瞭解爬蟲,本書在最後兩章還介紹瞭有關爬蟲的數據挖掘等內容。
由於搜索引擎相關領域也正在快速發展中,而且由於篇幅的限製,有些不成熟的內容,沒有能夠在本書體現,例如有關"暗網"的內容。隨著技術的不斷發展,我們將在今後的版本中加入這些內容。
本書適閤需要具體實現網絡爬蟲的程序員使用,對於信息檢索等相關研究人員也有一定的參考價值,同時獵兔搜索技術團隊也已經開發齣以本書為基礎的專門培訓課程和商業軟件。目前的一些網絡爬蟲軟件仍然有很多功能有待實現,作者真誠地希望通過本書把讀者帶入網絡爬蟲開發的大門並認識更多的朋友。
感謝開源軟件和我們的傢人、關心我們的老師和朋友、創業夥伴以及選擇獵兔搜索軟件的客戶多年來的支持。
編 者
自己動手寫網絡爬蟲(修訂版 配光盤) 下載 mobi pdf epub txt 電子書 格式 2024
自己動手寫網絡爬蟲(修訂版 配光盤) 下載 mobi epub pdf 電子書書籍內容java編寫爬蟲,紙質不是很好,有點透明。
評分正版新書,配光盤,很好
評分買瞭之後沒看,老大說python對爬蟲的支持比較好,現在在學python,準備用python學習爬蟲。也建議大傢這麼學,畢竟語言都有所長,就像java擅長網頁和安卓,c適閤寫底層和算法,那麼python則適閤數據采集和爬蟲。
評分東西不錯 東西不錯
評分還沒開始看,應該不錯
評分書籍內容java編寫爬蟲,紙質不是很好,有點透明。
評分很好,很好,很好,很好,很好,很好。
評分【評論之前我先說一句,給好評的絕對是沒看書,鄙視你們這種不看就給評價的】正在看,怎麼辦呢,自己買的書,哭著也要看完,有幾點我要吐槽。注釋太渣,一眼看懂的注釋,那種關鍵地方不注釋。貼例子,貼一大堆那種類都不完整的開源項部代碼,可讀性真差。光盤裏麵的內容太少,最基本也要保證書上有的代碼光盤裏麵有啊。jar包,能否把包名寫詳細點?
評分java代碼寫的,
自己動手寫網絡爬蟲(修訂版 配光盤) mobi epub pdf txt 電子書 格式下載 2024