發表於2024-11-18
★相比用Python寫網絡爬蟲,Java更有後發優勢
★運行在服務器端的網絡爬蟲,更應該用Java開發
★本書結閤作者多年網絡爬蟲開發經驗
★全麵係統講解瞭網絡爬蟲相關技術並以Java實現
★通俗易懂、代碼清晰、案例豐富實用
★一本書全麵掌握網絡爬蟲開發
本書介紹瞭如何開發網絡爬蟲。內容主要包括開發網絡爬蟲所需要的Java語法基礎和網絡爬蟲的工作原理,如何使用開源組件HttpClient和爬蟲框架Crawler4j抓取網頁信息,以及針對抓取到的文本進行有效信息的提取。為瞭擴展抓取能力,本書介紹瞭實現分布式網絡爬蟲的關鍵技術。
本書介紹瞭如何開發網絡爬蟲。內容主要包括開發網絡爬蟲所需要的Java語法基礎和網絡爬蟲的工作原理,如何使用開源組件HttpClient和爬蟲框架Crawler4j抓取網頁信息,以及針對抓另外,本書介紹瞭從圖像和語音等多媒體格式文件中提取文本信息,以及如何使用大數據技術存儲抓取到的信息。
最後,以實戰為例,介紹瞭如何抓取微信和微博,以及在電商、醫藥、金融等領域的案例應用。其中,電商領域的應用介紹瞭使用網絡爬蟲抓取商品信息入庫到網上商店的數據庫錶。醫藥領域的案例介紹瞭抓取PubMed醫藥論文庫。金融領域的案例介紹瞭抓取股票信息,以及從年報PDF文檔中提取錶格等。本書適用於對開發信息采集軟件感興趣的自學者。也可以供有Java或程序設計基礎的開發人員參考。
★羅剛,獵兔搜索創始人,帶領獵兔搜索技術開發團隊先後開發齣獵兔中文分詞係統、獵兔信息提取係統、獵兔智能垂直搜索係統以及網絡信息監測係統等,實現互聯網信息的采集、過濾、搜索和實時監測。曾編寫齣版《自己動手寫搜索引擎》、《自己動手寫網絡爬蟲》、《使用C#開發搜索引擎》,獲得廣泛好評。在北京和上海等地均有獵兔培訓的學員。
第1章 技術基礎 1
1.1 第一個程序 1
1.2 準備開發環境 2
1.2.1 JDK 2
1.2.2 Eclipse 3
1.3 類和對象 4
1.4 常量 5
1.5 命名規範 6
1.6 基本語法 6
1.7 條件判斷 7
1.8 循環 8
1.9 數組 9
1.10 位運算 11
1.11 枚舉類型 13
1.12 比較器 14
1.13 方法 14
1.14 集閤類 15
1.14.1 動態數組 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章 網絡爬蟲入門 36
2.1 獲取信息 36
2.1.1 提取鏈接 37
2.1.2 采集新聞 37
2.2 各種網絡爬蟲 38
2.2.1 信息采集器 40
2.2.2 廣度優先遍曆 41
2.2.3 分布式爬蟲 42
2.3 爬蟲相關協議 43
2.3.1 網站地圖 44
2.3.2 Robots協議 45
2.4 爬蟲架構 48
2.4.1 基本架構 48
2.4.2 分布式爬蟲架構 51
2.4.3 垂直爬蟲架構 54
2.5 自己寫網絡爬蟲 55
2.6 URL地址查新 57
2.6.1 嵌入式數據庫 58
2.6.2 布隆過濾器 60
2.6.3 實現布隆過濾器 61
2.7 部署爬蟲 63
2.7.1 部署到Windows 64
2.7.2 部署到Linux 64
2.8 本章小結 65
第3章 定嚮采集 69
3.1 下載網頁的基本方法 69
3.1.1 網卡 70
3.1.2 下載網頁 70
3.2 HTTP基礎 75
3.2.1 協議 75
3.2.2 URI 77
3.2.3 DNS 84
3.3 使用HttpClient下載網頁 84
3.3.1 HttpCore 94
3.3.2 狀態碼 98
3.3.3 創建 99
3.3.4 模擬瀏覽器 99
3.3.5 重試 100
3.3.6 抓取壓縮的網頁 102
3.3.7 HttpContext 104
3.3.8 下載中文網站 105
3.3.9 抓取需要登錄的網頁 106
3.3.10 代理 111
3.3.11 DNS緩存 112
3.3.12 並行下載 113
3.4 下載網絡資源 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 網頁更新 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動態頁麵 137
3.4.14 抓取即時信息 141
3.4.15 抓取暗網 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 網頁過濾器 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 監控 179
3.12 增量抓取 180
3.13 管理界麵 180
3.14 本章小結 181
第4章 數據存儲 182
4.1 存儲提取內容 182
4.1.1 SQLite 183
4.1.2 Access數據庫 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 識彆網頁的編碼 198
5.2.3 網頁編碼轉換為字符串編碼 201
5.2.4 使用正則錶達式提取數據 202
5.2.5 結構化信息提取 206
5.2.6 錶格 209
5.2.7 網頁的DOM結構 210
5.2.8 使用Jsoup提取信息 211
5.2.9 使用XPath提取信息 217
5.2.10 HTMLUnit提取數據 219
5.2.11 網頁結構相似度計算 220
5.2.12 提取標題 222
5.2.13 提取日期 224
5.2.14 提取模闆 225
5.2.15 提取RDF信息 227
5.2.16 網頁解析器原理 227
5.3 RSS 229
5.3.1 Jsoup解析RSS 230
5.3.2 ROME 231
5.3.3 抓取流程 231
5.4 網頁去噪 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 流媒體內容提取 317
5.10.1 音頻流內容提取 317
5.10.2 視頻流內容提取 321
5.11 內容糾錯 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 網頁編碼 349
6.2.5 並發 349
6.3 本章小結 352
第7章 網頁排重 353
7.1 語義指紋 354
7.2 SimHash 357
7.3 分布式文檔排重 367
7.4 本章小結 369
第8章 網頁分類 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 網頁分類 403
8.3 本章小結 403
第9章 案例分析 404
9.1 金融爬蟲 404
9.1.1 中國能源政策數據 404
9.1.2 世界原油現貨交易和期貨交易數據 405
9.1.3 股票數據 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 數據導入ECShop 420
9.2.6 采集淘寶 423
9.3 自動化行業采集 424
9.4 社會化信息采集 424
9.5 微博爬蟲 424
9.6 微信爬蟲 426
9.7 海關數據 426
9.8 醫藥數據 427
9.9 本章小結 429
後記 430
2.3 爬蟲相關協議
相比於人,爬蟲有更快的檢索速度和更深的層次,所以爬蟲可能使一個站點癱瘓。
抓取網站時,為瞭不影響用戶正常訪問該網站。爬蟲需要有禮貌。例如,它不會不告而訪,它會在自己的“user agent”中聲稱:“我是某某搜索引擎的爬蟲。”
有些網站希望爬蟲避免在白天對其網頁進行抓取,從而不影響白天正常的對外公眾服務,DNS服務提供商也不希望大量的域名解析工作量被搜索爬蟲的域名請求所占用。為瞭避免抓取的網站響應請求的負擔過重,爬蟲需要遵循禮貌性原則,不要同時發起過多的下載網頁請求,這樣纔可能有更多的網站對爬蟲友好。為瞭減少網站對爬蟲的抱怨,建議每秒隻抓取幾次,把抓取任務盡量平均分配到每個時間段,並且避免高峰時段對訪問的網站負擔過重。
2.3.1 網站地圖
為瞭方便爬蟲遍曆和更新網站內容,網站可以設置Sitemap.xml。Sitemap.xml也就是網站地圖,不過這個網站地圖是用XML寫的。例如,http://www.10010.com/Sitemap.xml。
在網站地圖中列齣網站中的網址以及關於每個網址的其他元數據(上次更新的時間、更改的頻率以及相對於網站上其他網址的重要程度等),以便搜索引擎抓取網站。
完整格式如下所示。
XML標簽的含義說明如下。
l Loc:頁麵永久鏈接地址。
l Lastmod:頁麵最後修改時間。
l Changefreq:頁麵內容更新頻率。
l Priority:相對於其他頁麵的優先權。
2.3.2 Robots協議
作為一個爬蟲程序,在網上應該遵守爬蟲的“道德”。何謂爬蟲的“道德”?因為爬蟲會訪問網站,並下載其中的資源。尤其是多綫程爬蟲,可能會在訪問一個網站的時候開啓多個綫程,然後使用很多Session進行連接,爬取網頁,很容易造成網站癱瘓、不能訪問等後果。還有一種情況是網站有很多東西屬於自己的“秘密”,本身就不想讓爬蟲抓取,如果爬蟲隨意抓取,就相當於侵犯網站的“隱私”。
為瞭避免這種情況的發生,互聯網行業采用瞭兩種辦法,第一種是在網站的根目錄下放置一個文件,起名為robots.txt,其中規定瞭哪些內容不想被抓取;另一種是設置Robots Meta標簽。
robots.txt文件必須放置在站點的根目錄下,而且文件名必須小寫。該文件包含一條或更多的記錄,這些記錄用空行分開(以CR、CR/NL或者NL作為結束符),在該文件中可以用#進行注解,具體使用方法和UNIX中的慣例一樣。該文件中的記錄通常以一行或多行User-agent開始,後麵加上若乾Disallow行,詳細情況如下。
l User-agent:該項的值用於描述搜索引擎robots的名字。在robots.txt文件中,如果有多條User-agent記錄,說明有多個robots會受到該協議的限製,對該文件來說,至少要有一條User-agent記錄。如果User-agent的值設為*,則該協議對任何機器人均有效,在robots.txt文件中,“User-agent:*”這樣的記錄隻能有一條。
l Disallow:該項的值用於描述不希望被訪問到的URL,這個URL可以是一條完整的路徑,也可以是部分路徑,任何以Disallow開頭的URL均不會被robots訪問到。
任何一條Disallow記錄為空,說明該網站的所有部分都允許被訪問,在robots.txt文件中,至少要有一條Disallow記錄。如果robots.txt是一個空文件,則該網站對於所有的搜索引擎Robots,都是開放的。一個robots.txt的例子如下所示。
以上例子錶明這個網站的Robots協議對每個爬蟲都適用,並且不允許爬取/cgi-bin/、/tmp/和/private/下的文件。
當一個爬蟲訪問一個站點時,它會首先檢查該站點根目錄下是否存在robots.txt,如果存在,爬蟲就會按照該文件中的內容來確定訪問的範圍;如果該文件不存在,所有的爬蟲將能夠訪問網站上所有沒有被口令保護的頁麵。
在HttpClient包中,當執行get或者post方法時,會默認提供對robots.txt的支持,不抓取Disallow規定的目錄下的網頁。當然,HttpClient也設置瞭默認選項,可以讓編寫的爬蟲不受 robots.txt協議的限製,但是,作為一個網絡爬蟲作者,我們還是提倡有“道德”的抓取,以保障互聯網行業健康發展。
現在我們討論第二種方法,即通過設置Robots Meta的值來限製爬蟲的訪問。這種方法是一種細粒度的方法,能夠把限製細化到每個網頁。和其他的Meta標簽(如使用的語言、頁麵的描述、關鍵詞等)一樣,Robots Meta標簽也放在頁麵的<head></head>中,專門用來告訴搜索引擎Robots如何抓取該頁的內容。
Robots Meta標簽中沒有大小寫之分,name=“Robots”錶示所有的搜索引擎,可以針對某個具體搜索引擎寫為name=“BaiduSpider”。Content部分有4個指令選項:INDEX、NOINDEX、FOLLOW和NOFOLLOW,指令間以“,”分隔。
前 言
現代社會,有效信息對人來說就像氧氣一樣不可或缺。互聯網讓有效信息的收集工作變得更容易。當你在網上衝浪時,網絡爬蟲也在網絡中穿梭,自動收集互聯網上有用的信息。
自動收集和篩選信息的網絡爬蟲讓有效信息的流動性增強,讓我們更加高效地獲取信息。隨著越來越多的信息顯現於網絡,網絡爬蟲也越來越有用。
各行業都離不開對信息的采集和加工處理。例如,農業需要抓取氣象數據、農産品行情數據等實現精準農業。機械行業需要抓取零件、圖紙信息作為設計參考。醫藥行業需要抓取一些疾病的治療方法信息。金融行業需要抓取上市公司基本麵和技術麵等相關信息作為股市漲跌的參考,例如,太鋼生産齣圓珠筆頭, 網絡爬蟲全解析――技術、原理與實踐 下載 mobi epub pdf txt 電子書 格式
網絡爬蟲全解析――技術、原理與實踐 下載 mobi pdf epub txt 電子書 格式 2024
網絡爬蟲全解析――技術、原理與實踐 下載 mobi epub pdf 電子書很好,價錢閤適,買的劃算
評分單位買的,好評,,,,,,
評分主講python的web開發,綜閤瞭常見的WEB框架
評分正在學習當中,正品,信賴京東。
評分不錯的選擇,我們的生活方式是什麼時候迴來呀,我們的生活方式是什麼
評分寫得深入淺齣,引人入勝,閱讀中經常能領悟到作者的思維方式,感謝作者,感謝京東!
評分在書店看到的這本書,網上買比書店便宜?。httpclient,還行吧,如果注釋下每個方法用途就更好瞭
評分這本Python很基礎 適閤小白
評分公司購買的,正版書,還不錯。
網絡爬蟲全解析――技術、原理與實踐 mobi epub pdf txt 電子書 格式下載 2024