出版時(shí)間:2010-10 出版社:清華大學(xué) 作者:羅剛//王振東 頁(yè)數(shù):346
Tag標(biāo)簽:無(wú)
前言
當(dāng)你在網(wǎng)上沖浪時(shí),你是否知道還有一類特殊的網(wǎng)絡(luò)用戶也在互聯(lián)網(wǎng)上默默地工作著,它們就是網(wǎng)絡(luò)爬蟲。這些網(wǎng)絡(luò)爬蟲按照設(shè)計(jì)者預(yù)定的方式,在網(wǎng)絡(luò)中穿梭,同時(shí)自動(dòng)收集有用的信息,進(jìn)行分類和整理,將整理結(jié)果提供給用戶,以方便用戶查找他們感興趣的內(nèi)容。由于網(wǎng)絡(luò)爬蟲的實(shí)用性,引起了很多程序員,特別是Web程序員的興趣。但是大多數(shù)網(wǎng)絡(luò)爬蟲的開發(fā)原理與技巧在專業(yè)的公司內(nèi)部都秘而不宣,至今仍然缺少理論與實(shí)踐相結(jié)合的專門介紹網(wǎng)絡(luò)爬蟲的書籍。本書將彌補(bǔ)這個(gè)問(wèn)題,嘗試?yán)碚撆c實(shí)踐相結(jié)合,深入透徹地講解網(wǎng)絡(luò)爬蟲的原理,并且輔以相關(guān)代碼作為參考。本書相關(guān)的代碼在附帶光盤中可以找到。本書的兩位主要作者在搜索引擎領(lǐng)域都有豐富的理論和實(shí)踐經(jīng)驗(yàn)。同時(shí),還有多個(gè)程序員幫忙開發(fā)或編寫了代碼實(shí)現(xiàn),例如Java實(shí)現(xiàn)異步I/O或?qū)DF文件的處理等。由于作者的日常工作繁忙,做得不夠的地方敬請(qǐng)諒解。作者羅剛在參加編寫本書之前,還獨(dú)立撰寫過(guò)《自己動(dòng)手寫搜索引擎》一書,但存在講解不夠細(xì)致、知識(shí)點(diǎn)不夠深入等問(wèn)題。此次與王振東合著本書,相對(duì)于上一本書而言,對(duì)讀者反饋有更高的預(yù)期。因?yàn)樽髡呦嘈湃缦碌募僭O(shè):如果能夠與更多的人更好地合作,事情往往能做得更好。本書從基本的爬蟲原理開始講解,通過(guò)介紹優(yōu)先級(jí)隊(duì)列、寬度優(yōu)先搜索等內(nèi)容引領(lǐng)讀者入門;之后根據(jù)當(dāng)前風(fēng)起云涌的云計(jì)算熱潮,重點(diǎn)講述了云計(jì)算的相關(guān)內(nèi)容及其在爬蟲中的應(yīng)用,以及帶偏好的爬蟲、信息抽取、鏈接分析等內(nèi)容;為了能夠讓讀者更深入地了解爬蟲,本書在最后兩章還介紹了有關(guān)爬蟲的數(shù)據(jù)挖掘的內(nèi)容。由于搜索引擎相關(guān)領(lǐng)域也正在快速發(fā)展中,而且由于篇幅的限制,有些不成熟的內(nèi)容,沒有能夠在本書體現(xiàn),例如有關(guān)"暗網(wǎng)"的內(nèi)容。隨著技術(shù)的不斷發(fā)展,我們將在今后的版本中加入這些內(nèi)容。
內(nèi)容概要
本書介紹了網(wǎng)絡(luò)爬蟲開發(fā)中的關(guān)鍵問(wèn)題與java實(shí)現(xiàn)。主要包括從互聯(lián)網(wǎng)獲取信息與提取信息和對(duì)web信息挖掘等內(nèi)容。本書在介紹基本原理的同時(shí)注重輔以具體代碼實(shí)現(xiàn)來(lái)幫助讀者加深理解,書中部分代碼甚至可以直接使用。本書適用于有java程序設(shè)計(jì)基礎(chǔ)的開發(fā)人員。同時(shí)也可以作為計(jì)算機(jī)相關(guān)專業(yè)本科生或研究生的參考教材。
書籍目錄
第1篇 自己動(dòng)手抓取數(shù)據(jù)第1章 全面剖析網(wǎng)絡(luò)爬蟲 1.1 抓取網(wǎng)頁(yè) 1.1.1 深入理解url 1.1.2
通過(guò)指定的url抓取網(wǎng)頁(yè)內(nèi)容 1.1.3 java網(wǎng)頁(yè)抓取示例 1.1.4 處理http狀態(tài)碼 1.2 寬度優(yōu)先爬蟲和帶偏好的爬蟲
1.2.1 圖的寬度優(yōu)先遍歷 1.2.2 寬度優(yōu)先遍歷互聯(lián)網(wǎng) 1.2.3 java寬度優(yōu)先爬蟲示例 1.2.4 帶偏好的爬蟲
1.2.5 java帶偏好的爬蟲示例 1.3 設(shè)計(jì)爬蟲隊(duì)列 1.3.1 爬蟲隊(duì)列 1.3.2 使用berkeley db構(gòu)建爬蟲隊(duì)列
1.3.3 使用berkeley db構(gòu)建爬蟲隊(duì)列示例 1.3.4 使用布隆過(guò)濾器構(gòu)建visited表 1.3.5
詳解heritrix爬蟲隊(duì)列 1.4 設(shè)計(jì)爬蟲架構(gòu) .1.4.1 爬蟲架構(gòu) 1.4.2 設(shè)計(jì)并行爬蟲架構(gòu) 1.4.3
詳解heritrix爬蟲架構(gòu) 1.5 使用多線程技術(shù)提升爬蟲性能 1.5.1 詳解java多線程 1.5.2 爬蟲中的多線程
1.5.3 一個(gè)簡(jiǎn)單的多線程爬蟲實(shí)現(xiàn) 1.5.4 詳解heritrix多線程結(jié)構(gòu) 1.6 本章小結(jié)第2章 分布式爬蟲 2.1
設(shè)計(jì)分布式爬蟲 2.1.1 分布式與云計(jì)算 2.1.2 分布式與云計(jì)算技術(shù)在爬蟲中的應(yīng)用——淺析google的云計(jì)算架構(gòu) 2.2
分布式存儲(chǔ) 2.2.1 從ralation_db到key/value存儲(chǔ) 2.2.2 consistent hash算法 2.2.3
consistent hash代碼實(shí)現(xiàn) 2.3 google的成功之道——gfs 2.3.1 gfs詳解 2.3.2
開源gfs——hdfs 2.4 google網(wǎng)頁(yè)存儲(chǔ)秘訣——bigtable 2.4.1 詳解bigtable 2.4.2
開源bigtable——hbase 2.5 google的成功之道——mapreduce算法 2.5.1 詳解mapreduce算法
2.5.2 mapreduce容錯(cuò)處理 2.5.3 mapreduce實(shí)現(xiàn)架構(gòu) 2.5.4 hadoop中的mapreduce簡(jiǎn)介
2.5.5 wordcount例子的實(shí)現(xiàn) 2.6 nutch中的分布式 2.6.1 nutch爬蟲詳解 2.6.2
nutch中的分布式 2.7 本章小結(jié)第3章 爬蟲的“方方面面” 3.1 爬蟲中的“黑洞” 3.2 限定爬蟲和主題爬蟲 3.2.1
理解主題爬蟲 3.2.2 java主題爬蟲 3.2.3 理解限定爬蟲 3.2.4 java限定爬蟲示例 3.3 有“道德”的爬蟲
3.4 木章小結(jié)第2篇 自己動(dòng)手抽取web內(nèi)容第4章 “處理”html頁(yè)面 4.1 征服正則表達(dá)式 4.1.1 學(xué)習(xí)正則表達(dá)式
4.1.2 java正則表達(dá)式 4.2 抽取html正文 4.2.1 了解htmlparser 4.2.2 使用正則表達(dá)式抽取示例
4.3 抽取正文 4.4 從javascript中抽取信息 4.4.1 javascript抽取方法 4.4.2
javascript抽取示例 4.5本章小結(jié)第5章 非html正文抽取 5.1 抽取pdf文件 5.1.1 學(xué)習(xí)pdfbox
5.1.2 使用pdfbox抽取示例 5.1.3 提取pdf文件標(biāo)題 5.1.4 處理pdf格式的公文 5.2 抽取office文檔
5.2.1 學(xué)習(xí)poi 5.2.2 使用poi抽取word示例 5.2.3 使用poi抽取ppt示例 5.2.4
使用poi抽取excel示例 5.3 抽取rtf 5.3.1 開源rtf文件解析器 5.3.2 實(shí)現(xiàn)一個(gè)rtf文件解析器 5.3.3
解析rtf示例 5.4 本章小結(jié)第6章 多媒體抽取 6.1 抽取視頻 6.1.1 抽取視頻關(guān)鍵幀 6.1.2 java視頻處理框架
6.1.3 java視頻抽取示例 6.2 音頻抽取 6.2.1 抽取音頻 6.2.2 學(xué)習(xí)java音頻抽取技術(shù) 6.3 本章小結(jié)第7章
去掉網(wǎng)頁(yè)中的“噪聲” 7.1 “噪聲”對(duì)網(wǎng)頁(yè)的影響 7.2 利用“統(tǒng)計(jì)學(xué)”消除“噪聲” 7.2.1 網(wǎng)站風(fēng)格樹
7.2.2“統(tǒng)計(jì)學(xué)去噪”java實(shí)現(xiàn) 7.3 利用“視覺”消除“噪聲” 7.3.1 “視覺”與“噪聲” 7.3.2
“視覺去噪”java實(shí)現(xiàn) 7.4 本章小結(jié)第3篇 自己動(dòng)手挖掘web數(shù)據(jù)第8章 分析web圖 8.1 存儲(chǔ)web“圖” 8.2
利用web“圖”分析鏈接 8.3 google的秘密——pagerank 8.3.1 深入理解pagerank算法 8.3.2
pagerank算法的java實(shí)現(xiàn) 8.3.3 應(yīng)用pagerank進(jìn)行鏈接分析 8.4 pagerank的兄弟hits 8.4.1
深入理解hits算法 8.4.2 hits算法的java實(shí)現(xiàn) 8.4.3 應(yīng)用hits進(jìn)行鏈接分析 8.5
pagerank與hits的比較 8.6 本章小結(jié)第9章 去掉重復(fù)的“文檔” 9.1 何為“重復(fù)”的文檔 9.2
去除“重復(fù)”文檔——排重 9.3 利用“語(yǔ)義指紋”排重 9.3.1 理解“語(yǔ)義指紋” 9.3.2 “語(yǔ)義指紋”排重的java實(shí)現(xiàn)
9.4 simhash排重 9.4.1 理解simhash 9.4.2 simhash排重的java實(shí)現(xiàn) 9.5 分布式文檔排重
9.6 本章小結(jié)第10章 分類與聚類的應(yīng)用 10.1 網(wǎng)頁(yè)分類 10.1.1 收集語(yǔ)料庫(kù) 10.1.2 選取網(wǎng)頁(yè)的“特征”
10.1.3 使用支持向量機(jī)進(jìn)行網(wǎng)頁(yè)分類 10.1.4 利用url地址進(jìn)行網(wǎng)頁(yè)分類 10.1.5 使用adaboost進(jìn)行網(wǎng)頁(yè)分類
10.2 網(wǎng)頁(yè)聚類 10.2.1 深入理解dbscan算法 10.2.2 使用dbscan算法聚類實(shí)例 10.3 本章小結(jié)
章節(jié)摘錄
插圖:代表主機(jī)ftp.yoyodyne.com的根目錄。爬蟲最主要的處理對(duì)象就是URL,它根據(jù)URL地址取得所需要的文件內(nèi)容,然后對(duì)它進(jìn)行進(jìn)一步的處理。因此,準(zhǔn)確地理解URL對(duì)理解網(wǎng)絡(luò)爬蟲至關(guān)重要。從下一節(jié)開始,我們將詳細(xì)地講述如何根據(jù)URL地址來(lái)獲得網(wǎng)頁(yè)內(nèi)容。1.1.2 通過(guò)指定的URL抓取網(wǎng)頁(yè)內(nèi)容上一節(jié)詳細(xì)介紹了URL的構(gòu)成,這一節(jié)主要闡述如何根據(jù)給定的URL來(lái)抓取網(wǎng)頁(yè)。所謂網(wǎng)頁(yè)抓取,就是把URL地址中指定的網(wǎng)絡(luò)資源從網(wǎng)絡(luò)流中讀取出來(lái),保存到本地。類似于使用程序模擬IE瀏覽器的功能,把URL作為HTTP請(qǐng)求的內(nèi)容發(fā)送到服務(wù)器端,然后讀取服務(wù)器端的響應(yīng)資源。Java語(yǔ)言是為網(wǎng)絡(luò)而生的編程語(yǔ)言,它把網(wǎng)絡(luò)資源看成是一種文件,它對(duì)網(wǎng)絡(luò)資源的訪問(wèn)和對(duì)本地文件的訪問(wèn)一樣方便。它把請(qǐng)求和響應(yīng)封裝為流。因此我們可以根據(jù)相應(yīng)內(nèi)容,獲得響應(yīng)流,之后從流中按字節(jié)讀取數(shù)據(jù)。例如,java.net.URL類可以對(duì)相應(yīng)的Web服務(wù)器發(fā)出請(qǐng)求并且獲得響應(yīng)文檔。
編輯推薦
《自己動(dòng)手寫網(wǎng)絡(luò)爬蟲》是國(guó)內(nèi)第一本專門講解網(wǎng)絡(luò)爬蟲開發(fā)的書籍,介紹如何應(yīng)用云計(jì)算架構(gòu)開發(fā)分布式爬蟲。獵兔搜索工程師多年項(xiàng)目經(jīng)驗(yàn)總結(jié)深入介紹Web數(shù)據(jù)挖掘?qū)崿F(xiàn)過(guò)程光盤中提供了高效的代碼解決方案案例均使用流行的Java語(yǔ)言編寫
圖書封面
圖書標(biāo)簽Tags
無(wú)
評(píng)論、評(píng)分、閱讀與下載
自己動(dòng)手寫網(wǎng)絡(luò)爬蟲 PDF格式下載