本書介紹了如何開發(fā)網(wǎng)絡爬蟲。內(nèi)容主要包括開發(fā)網(wǎng)絡爬蟲所需要的Java語法基礎和網(wǎng)絡爬蟲的工作原理,如何使用開源組件HttpClient和爬蟲框架Crawler4j抓取網(wǎng)頁信息,以及針對抓取到的文本進行有效信息的提取。為了擴展抓取能力,本書介紹了實現(xiàn)分布式網(wǎng)絡爬蟲的關鍵技術。
本書介紹了如何開發(fā)網(wǎng)絡爬蟲。內(nèi)容主要包括開發(fā)網(wǎng)絡爬蟲所需要的Java語法基礎和網(wǎng)絡爬蟲的工作原理,如何使用開源組件HttpClient和爬蟲框架Crawler4j抓取網(wǎng)頁信息,以及針對抓另外,本書介紹了從圖像和語音等多媒體格式文件中提取文本信息,以及如何使用大數(shù)據(jù)技術存儲抓取到的信息。
最后,以實戰(zhàn)為例,介紹了如何抓取微信和微博,以及在電商、醫(yī)藥、金融等領域的案例應用。其中,電商領域的應用介紹了使用網(wǎng)絡爬蟲抓取商品信息入庫到網(wǎng)上商店的數(shù)據(jù)庫表。醫(yī)藥領域的案例介紹了抓取PubMed醫(yī)藥論文庫。金融領域的案例介紹了抓取股票信息,以及從年報PDF文檔中提取表格等。本書適用于對開發(fā)信息采集軟件感興趣的自學者。也可以供有Java或程序設計基礎的開發(fā)人員參考。
★相比用Python寫網(wǎng)絡爬蟲,Java更有后發(fā)優(yōu)勢
★運行在服務器端的網(wǎng)絡爬蟲,更應該用Java開發(fā)
★本書結合作者多年網(wǎng)絡爬蟲開發(fā)經(jīng)驗
★全面系統(tǒng)講解了網(wǎng)絡爬蟲相關技術并以Java實現(xiàn)
★通俗易懂、代碼清晰、案例豐富實用
★一本書全面掌握網(wǎng)絡爬蟲開發(fā)
★羅剛,獵兔搜索創(chuàng)始人,帶領獵兔搜索技術開發(fā)團隊先后開發(fā)出獵兔中文分詞系統(tǒng)、獵兔信息提取系統(tǒng)、獵兔智能垂直搜索系統(tǒng)以及網(wǎng)絡信息監(jiān)測系統(tǒng)等,實現(xiàn)互聯(lián)網(wǎng)信息的采集、過濾、搜索和實時監(jiān)測。曾編寫出版《自己動手寫搜索引擎》、《自己動手寫網(wǎng)絡爬蟲》、《使用C#開發(fā)搜索引擎》,獲得廣泛好評。在北京和上海等地均有獵兔培訓的學員。
第1章 技術基礎 1
1.1 第一個程序 1
1.2 準備開發(fā)環(huán)境 2
1.2.1 JDK 2
1.2.2 Eclipse 3
1.3 類和對象 4
1.4 常量 5
1.5 命名規(guī)范 6
1.6 基本語法 6
1.7 條件判斷 7
1.8 循環(huán) 8
1.9 數(shù)組 9
1.10 位運算 11
1.11 枚舉類型 13
1.12 比較器 14
1.13 方法 14
1.14 集合類 15
1.14.1 動態(tài)數(shù)組 15
1.14.2 散列表 15
1.15 文件 19
1.15.1 文本文件 19
1.15.2 二進制文件 23
1.16 多線程 27
1.16.1 基本的多線程 28
1.16.2 線程池 30
1.17 折半查找 31
1.18 處理圖片 34
1.19 本章小結 35
第2章 網(wǎng)絡爬蟲入門 36
2.1 獲取信息 36
2.1.1 提取鏈接 37
2.1.2 采集新聞 37
2.2 各種網(wǎng)絡爬蟲 38
2.2.1 信息采集器 40
2.2.2 廣度優(yōu)先遍歷 41
2.2.3 分布式爬蟲 42
2.3 爬蟲相關協(xié)議 43
2.3.1 網(wǎng)站地圖 44
2.3.2 Robots協(xié)議 45
2.4 爬蟲架構 48
2.4.1 基本架構 48
2.4.2 分布式爬蟲架構 51
2.4.3 垂直爬蟲架構 54
2.5 自己寫網(wǎng)絡爬蟲 55
2.6 URL地址查新 57
2.6.1 嵌入式數(shù)據(jù)庫 58
2.6.2 布隆過濾器 60
2.6.3 實現(xiàn)布隆過濾器 61
2.7 部署爬蟲 63
2.7.1 部署到Windows 64
2.7.2 部署到Linux 64
2.8 本章小結 65
第3章 定向采集 69
3.1 下載網(wǎng)頁的基本方法 69
3.1.1 網(wǎng)卡 70
3.1.2 下載網(wǎng)頁 70
3.2 HTTP基礎 75
3.2.1 協(xié)議 75
3.2.2 URI 77
3.2.3 DNS 84
3.3 使用HttpClient下載網(wǎng)頁 84
3.3.1 HttpCore 94
3.3.2 狀態(tài)碼 98
3.3.3 創(chuàng)建 99
3.3.4 模擬瀏覽器 99
3.3.5 重試 100
3.3.6 抓取壓縮的網(wǎng)頁 102
3.3.7 HttpContext 104
3.3.8 下載中文網(wǎng)站 105
3.3.9 抓取需要登錄的網(wǎng)頁 106
3.3.10 代理 111
3.3.11 DNS緩存 112
3.3.12 并行下載 113
3.4 下載網(wǎng)絡資源 115
3.4.1 重定向 115
3.4.2 解決套接字連接限制 118
3.4.3 下載圖片 119
3.4.4 抓取視頻 122
3.4.5 抓取FTP 122
3.4.6 網(wǎng)頁更新 122
3.4.7 抓取限制應對方法 126
3.4.8 URL地址提取 131
3.4.9 解析URL地址 134
3.4.10 歸一化 135
3.4.11 增量采集 135
3.4.12 iframe 136
3.4.13 抓取JavaScript動態(tài)頁面 137
3.4.14 抓取即時信息 141
3.4.15 抓取暗網(wǎng) 141
3.5 PhantomJS 144
3.6 Selenium 145
3.7 信息過濾 146
3.7.1 匹配算法 147
3.7.2 分布式過濾 153
3.8 采集新聞 153
3.8.1 網(wǎng)頁過濾器 154
3.8.2 列表頁 159
3.8.3 用機器學習的方法抓取新聞 160
3.8.4 自動查找目錄頁 161
3.8.5 詳細頁 162
3.8.6 增量采集 164
3.8.7 處理圖片 164
3.9 遍歷信息 164
3.10 并行抓取 165
3.10.1 多線程爬蟲 165
3.10.2 垂直搜索的多線程爬蟲 168
3.10.3 異步IO 172
3.11 分布式爬蟲 176
3.11.1 JGroups 176
3.11.2 監(jiān)控 179
3.12 增量抓取 180
3.13 管理界面 180
3.14 本章小結 181
第4章 數(shù)據(jù)存儲 182
4.1 存儲提取內(nèi)容 182
4.1.1 SQLite 183
4.1.2 Access數(shù)據(jù)庫 185
4.1.3 MySQL 186
4.1.4 寫入維基 187
4.2 HBase 187
4.3 Web圖 189
4.4 本章小結 193
第5章 信息提取 194
5.1 從文本提取信息 194
5.2 從HTML文件中提取文本 195
5.2.1 字符集編碼 195
5.2.2 識別網(wǎng)頁的編碼 198
5.2.3 網(wǎng)頁編碼轉換為字符串編碼 201
5.2.4 使用正則表達式提取數(shù)據(jù) 202
5.2.5 結構化信息提取 206
5.2.6 表格 209
5.2.7 網(wǎng)頁的DOM結構 210
5.2.8 使用Jsoup提取信息 211
5.2.9 使用XPath提取信息 217
5.2.10 HTMLUnit提取數(shù)據(jù) 219
5.2.11 網(wǎng)頁結構相似度計算 220
5.2.12 提取標題 222
5.2.13 提取日期 224
5.2.14 提取模板 225
5.2.15 提取RDF信息 227
5.2.16 網(wǎng)頁解析器原理 227
5.3 RSS 229
5.3.1 Jsoup解析RSS 230
5.3.2 ROME 231
5.3.3 抓取流程 231
5.4 網(wǎng)頁去噪 233
5.4.1 NekoHTML 234
5.4.2 Jsoup 238
5.4.3 提取正文 240
5.5 從非HTML文件中提取文本 241
5.5.1 PDF文件 242
5.5.2 Word文件 245
5.5.3 Rtf文件 247
5.5.4 Excel文件 253
5.5.5 PowerPoint文件 254
5.6 提取標題 254
5.6.1 提取標題的一般方法 255
5.6.2 從PDF文件中提取標題 259
5.6.3 從Word文件中提取標題 261
5.6.4 從Rtf文件中提取標題 261
5.6.5 從Excel文件中提取標題 267
5.6.6 從PowerPoint文件中提取標題 270
5.7 圖像的OCR識別 270
5.7.1 讀入圖像 271
5.7.2 準備訓練集 272
5.7.3 圖像二值化 274
5.7.4 切分圖像 279
5.7.5 SVM分類 283
5.7.6 識別漢字 287
5.7.7 訓練OCR 289
5.7.8 檢測行 290
5.7.9 識別驗證碼 291
5.7.10 JavaOCR 292
5.8 提取地域信息 292
5.8.1 IP地址 293
5.8.2 手機 315
5.9 提取新聞 316
5.10 流媒體內(nèi)容提取 317
5.10.1 音頻流內(nèi)容提取 317
5.10.2 視頻流內(nèi)容提取 321
5.11 內(nèi)容糾錯 322
5.11.1 模糊匹配問題 325
5.11.2 英文拼寫檢查 331
5.11.3 中文拼寫檢查 333
5.12 術語 336
5.13 本章小結 336
第6章 Crawler4j 338
6.1 使用Crawler4j 338
6.1.1 大眾點評 339
6.1.2 日志 342
6.2 crawler4j原理 342
6.2.1 代碼分析 343
6.2.2 使用Berkeley DB 344
6.2.3 縮短URL地址 347
6.2.4 網(wǎng)頁編碼 349
6.2.5 并發(fā) 349
6.3 本章小結 352
第7章 網(wǎng)頁排重 353
7.1 語義指紋 354
7.2 SimHash 357
7.3 分布式文檔排重 367
7.4 本章小結 369
第8章 網(wǎng)頁分類 370
8.1 關鍵詞加權法 371
8.2 機器學習的分類方法 378
8.2.1 特征提取 380
8.2.2 樸素貝葉斯 384
8.2.3 支持向量機 393
8.2.4 多級分類 401
8.2.5 網(wǎng)頁分類 403
8.3 本章小結 403
第9章 案例分析 404
9.1 金融爬蟲 404
9.1.1 中國能源政策數(shù)據(jù) 404
9.1.2 世界原油現(xiàn)貨交易和期貨交易數(shù)據(jù) 405
9.1.3 股票數(shù)據(jù) 405
9.1.4 從PDF文件中提取表格 408
9.2 商品搜索 408
9.2.1 遍歷商品 410
9.2.2 使用HttpClient 415
9.2.3 提取價格 416
9.2.4 水印 419
9.2.5 數(shù)據(jù)導入ECShop 420
9.2.6 采集淘寶 423
9.3 自動化行業(yè)采集 424
9.4 社會化信息采集 424
9.5 微博爬蟲 424
9.6 微信爬蟲 426
9.7 海關數(shù)據(jù) 426
9.8 醫(yī)藥數(shù)據(jù) 427
9.9 本章小結 429
后記 430