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