作者序
改版說明
本書大部分內容均針對網路爬蟲演算法以及大型Cluster 的架設,針對內容的爬蟲使用著墨較少,在第二版中,也加入了針對網頁內容爬蟲的程式。由於網路爬蟲套件已相當成熟,因此本書新增的十一章,將使用負盛名的Ruby Gem 來進行示範,分別是Nokogiri 以及Mechanize。讀者必須具備基本架設Ruby 執行的環境,並且對Ruby 語言有基礎的認識。
胡嘉璽
前言
當你在飆網時,你是否知道還有一類特殊的網路使用者也在網際網路上默默地工作著,它們就是網路爬蟲。這些網路爬蟲按照設計者預定的方式,在網路中穿梭,同時自動收集有用的資訊,進行分類和整理,將整理結果提供給使用者,以方便使用者尋找他們感興趣的內容。由於網路爬蟲的實用性,引有很多程式師,特別是Web程式師的興趣。
但是大多數網路爬蟲的開發原理與技巧在專業的公司內部都秘而不宣,至今仍然缺少理論與實作相結合的專門介紹網路爬蟲的書籍。本書將彌補這個問題,嘗試理論與實作相結合,深入透徹地講解網路爬蟲的原理,並且輔以相關程式碼作為參考。本書相關的程式碼可在http://www.topteam.cc 佳魁資訊官網下載。
本書的兩位主要作者在搜尋引擎領域都有豐富的理論和實作經驗。同時,還有多個程式師幫忙開發或撰寫了程式碼實現,例如Java 實現非同步I/O 或對PDF 檔案的處理等。
本書從基本的爬蟲原理開始講解,透過介紹優先順序佇列、寬度優先搜索等內容引領讀者入門;之後根據目前風起雲湧的雲端運算熱潮,重點講述雲端運算的相關內容及其在爬蟲中的應用,以及帶偏好的爬蟲、資訊抽取、連結分析等內容;為了能夠讓讀者更深入地了解爬蟲,本書在最後兩章還介紹了有關爬蟲的資料採擷的內容。
由於搜尋引擎相關領域也正在快速發展中,有些不成熟的內容,因篇幅有限不在本書表現,例如有關“暗網"的內容。隨著技術的不斷發展,我們將在今後的版本中加入這些內容。
本書適合需要實際應用搜尋引擎的程式師使用,對於資訊檢索等相關研究人員也具有參考價值,同時獵兔搜索技術團隊也已經開發出以本書為基礎的專門教育訓練課程和商務軟體。目前搜尋引擎開發人員仍然很稀乏,作者真誠地希望透過本書把讀者帶入搜尋引擎開發的大門並認識更多的朋友。
感謝開放原始碼軟體和我們的家人、關心我們的老師和朋友、創業夥伴以及選擇獵兔搜索軟體的客戶多年來的支援。由於手機遊戲發展快速,撰寫時間倉促,書中難免存在不妥之處,敬請讀者提出寶貴意見。
改版說明
本書大部分內容均針對網路爬蟲演算法以及大型Cluster 的架設,針對內容的爬蟲使用著墨較少,在第二版中,也加入了針對網頁內容爬蟲的程式。由於網路爬蟲套件已相當成熟,因此本書新增的十一章,將使用負盛名的Ruby Gem 來進行示範,分別是Nokogiri 以及Mechanize。讀者必須具備基本架設Ruby 執行的環境,並且對Ruby 語言有基礎的認識。
胡嘉璽
前言
當你在飆網時,你是否知道還有一類特殊的網路使用者也在網際網路上默默地工作著,它們就是網路爬蟲。這些網路爬蟲按照設計者預定的方式,在網路中穿梭,同時自動收集有用的資訊...
目錄
改版說明
前言
PART 1 自己動手抓取資料
第1章 全面剖析網路爬蟲
1.1 抓取網頁
1.2 寬度優先爬蟲和帶偏好的爬蟲
1.3 設計爬蟲佇列
1.4 設計爬蟲架構
1.5 使用多執行緒技術提升爬蟲性能
1.6 本章小結
第2章 分散式爬蟲
2.1 設計分散式爬蟲
2.2 分散式儲存
2.3 Google的成功之道 —— GFS
2.4 Google網頁儲存秘訣 —— BigTable
2.5 Google的成功之道 —— MapReduce演算法
2.6 Nutch中的分散式
2.7 本章小結
第3章 爬蟲的 "方方面面"
3.1 爬蟲中的"黑洞"
3.2 限定爬蟲和主題爬蟲
3.3 有"道德"的爬蟲
3.4 本章小結
PART 2自己動手抽取Web 內容
第4章 "處理" HTML 頁面
4.1 征服正則運算式
4.2 抽取HTML正文
4.3 抽取正文
4.4 從JavaScript中抽取資訊
4.5 本章小結
第5章 非HTML正文抽取
5.1 抽取PDF檔案
5.2 抽取Office文件
5.3 抽取RTF
5.4 本章小結
第6章 多媒體抽取
6.1 抽取視訊
6.2 聲音抽取
6.3 本章小結
第7章 去掉網頁中的 "雜訊"
7.1 "雜訊"對網頁的影響
7.2 利用"統計學"消除"雜訊"
7.3 利用 "視覺" 消除 "雜訊"
7.4 本章小結
PART 3 自己動手挖掘Web資料
第8章 分析Web圖
8.1 儲存Web"圖"
8.2 利用 Web "圖" 分析連結
8.3 Google的秘密 —— PageRank
8.4 PageRank 的兄弟HITS
8.5 PageRank與HITS的比較
8.6 本章小結
第9章 去掉重複的 "文件"
9.1 何為 "重複" 的文件
9.2 去除 "重複" 文件 —— 排除重複
9.3 利用 "語義指紋" 排除重複
9.4 SimHash排除重複
9.5 分散式文件排除重複
9.6 本章小結
第10章 分類與聚類別的應用
10.1 網頁分類.
10.2 網頁聚類
10.3 本章小結
第11章 用 Ruby 寫一個小爬蟲
11.1 先用 wget 測試
11.2 爬蟲專用的 Nokigiri 及 Mechanize
11.3 使用維基百科來測試
改版說明
前言
PART 1 自己動手抓取資料
第1章 全面剖析網路爬蟲
1.1 抓取網頁
1.2 寬度優先爬蟲和帶偏好的爬蟲
1.3 設計爬蟲佇列
1.4 設計爬蟲架構
1.5 使用多執行緒技術提升爬蟲性能
1.6 本章小結
第2章 分散式爬蟲
2.1 設計分散式爬蟲
2.2 分散式儲存
2.3 Google的成功之道 —— GFS
2.4 Google網頁儲存秘訣 —— BigTable
2.5 Google的成功之道 —— MapReduce演算法
2.6 Nutch中的分散式
2.7 本章小結
第3章 爬蟲的 "方方面面"
3.1 爬蟲中的"黑洞"
3.2 限定爬蟲和主題爬蟲
3.3 有"道德"的爬蟲...