第1篇自己動手抓取數據第1章全面剖析網絡爬蟲 3
1.1抓取網頁 4
1.1.1深入理解URL 4
1.1.2通過指定的URL抓取
網頁內容 6
1.1.3Java網頁抓取示例 8
1.1.4處理HTTP狀態碼 10
1.2寬度優先爬蟲和帶偏好的爬蟲 12
1.2.1圖的寬度優先遍歷 12
1.2.2寬度優先遍歷互聯網 13
1.2.3Java寬度優先爬蟲示例 15
1.2.4帶偏好的爬蟲 22
1.2.5Java帶偏好的爬蟲示例 23
1.3設計爬蟲隊列 24
1.3.1爬蟲隊列 24
1.3.2使用BerkeleyDB構建爬蟲
隊列 29
1.3.3使用BerkeleyDB構建爬蟲
隊列示例 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.2ConsistentHash算法 74
2.2.3ConsistentHash代碼實現 79
2.3Google的成功之道--GFS 80
2.3.1GFS詳解 80
2.3.2開源GFS--HDFS 84
2.4Google網頁存儲秘訣--BigTable 88
2.4.1詳解BigTable 88
2.4.2開源BigTable-HBase 93
2.5Google的成功之道--
MapReduce算法 98
2.5.1詳解MapReduce算法 100
2.5.2MapReduce容錯處理 101
2.5.3MapReduce實現架構 102
2.5.4Hadoop中的MapReduce
簡介 104
2.5.5wordCount例子的實現 105
2.6Nutch中的分布式 109
2.6.1Nutch爬蟲詳解 109
2.6.2Nutch中的分布式 116
本章小結 118
第3章爬蟲的"方方面面" 121
3.1爬蟲中的"黑洞" 122
3.2主題爬蟲和限定爬蟲 122
3.2.1理解主題爬蟲 122
3.2.2Java主題爬蟲 128
3.2.3理解限定爬蟲 130
3.2.4Java限定爬蟲示例 136
3.3有"道德"的爬蟲 152
本章小結 156
第2篇自己動手抽取Web內容
第4章"處理"HTML頁面 159
4.1征服正則表達式 160
4.1.1學習正則表達式 160
4.1.2Java正則表達式 163
4.2抽取HTML正文 169
4.2.1了解Jsoup 169
4.2.2使用正則表達式抽取示例 173
4.3抽取正文 177
4.4從JavaScript中抽取信息 193
4.4.1JavaScript抽取方法 193
4.4.2JavaScript抽取示例 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.2Java視頻處理框架 231
6.1.3Java視頻抽取示例 235
6.2音頻抽取 247
6.2.1抽取音頻 248
6.2.2Java音頻抽取技術 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.3Google的秘密--PageRank 291
8.3.1深入理解PageRank算法 291
8.3.2PageRank算法的Java實現 295
8.3.3應用PageRank進行鏈接
分析 298
8.4PageRank的兄弟HITS 299
8.4.1深入理解HITS算法 299
8.4.2HITS算法的Java實現 300
8.4.3應用HITS進行鏈接分析 311
8.5PageRank與HITS比較 312
本章小結 313
第9章去掉"重復"的文檔 315
9.1何為"重復"的文檔 316
9.2利用"語義指紋"排重 316
9.2.1理解"語義指紋" 318
9.2.2"語義指紋"排重的
Java實現 319
9.3SimHash排重 319
9.3.1理解SimHash 320
9.3.2SimHash排重的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