導航:首頁 > 編程大全 > hadoop網路爬蟲

hadoop網路爬蟲

發布時間:2025-03-22 22:43:55

㈠ 開源爬蟲框架各有什麼優缺點

首先爬蟲框架有三種

  1. 分布式爬蟲:Nutch

  2. JAVA單機爬蟲:Crawler4j,WebMagic,WebCollector

  3. 非JAVA單機爬蟲:scrapy

第一類:分布式爬蟲

優點:

  1. 海量URL管理

  2. 網速快

缺點:

  1. Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。

  2. 用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非。

  3. Nutch依賴hadoop運行,hadoop本身會消耗很多的時間。如果集群機器數量較少,爬取速度反而不如單機爬蟲。

  4. Nutch雖然有一套插件機制,而且作為亮點宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發過Nutch插件的人都知道,Nutch的插件系統有多蹩腳。利用反射的機制來載入和調用插件,使得程序的編寫和調試都變得異常困難,更別說在上面開發一套復雜的精抽取系統了。

  5. Nutch並沒有為精抽取提供相應的插件掛載點。Nutch的插件有隻有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務的,並沒有為精抽取提供掛載點。大多數Nutch的精抽取插件,都是掛載在「頁面解析」(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為後續爬取提供URL),以及為搜索引擎提供一些易抽取的網頁信息(網頁的meta信息、text)

  6. 用Nutch進行爬蟲的二次開發,爬蟲的編寫和調試所需的時間,往往是單機爬蟲所需的十倍時間不止。了解Nutch源碼的學習成本很高,何況是要讓一個團隊的人都讀懂Nutch源碼。調試過程中會出現除程序本身之外的各種問題(hadoop的問題、hbase的問題)。

  7. Nutch2的版本目前並不適合開發。官方現在穩定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。Nutch2.3之前、Nutch2.2.1之後的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩定(一直在修改)。

第二類:JAVA單機爬蟲

優點:

  1. 支持多線程。

  2. 支持代理。

  3. 能過濾重復URL的。

  4. 負責遍歷網站和下載頁面。爬js生成的信息和網頁信息抽取模塊有關,往往需要通過模擬瀏覽器(htmlunit,selenium)來完成。

缺點:

設計模式對軟體開發沒有指導性作用。用設計模式來設計爬蟲,只會使得爬蟲的設計更加臃腫。

第三類:非JAVA單機爬蟲

優點:

  1. 先說python爬蟲,python可以用30行代碼,完成JAVA

  2. 50行代碼乾的任務。python寫代碼的確快,但是在調試代碼的階段,python代碼的調試往往會耗費遠遠多於編碼階段省下的時間。

  3. 使用python開發,要保證程序的正確性和穩定性,就需要寫更多的測試模塊。當然如果爬取規模不大、爬取業務不復雜,使用scrapy這種爬蟲也是蠻不錯的,可以輕松完成爬取任務。

缺點:

  1. bug較多,不穩定。

㈡ 現在的網路爬蟲的研究成果和存在的問題有哪些

網路爬蟲是Spider(或Robots、Crawler)等詞的意譯,是一種高效的信息抓取工具,它集成了搜索引擎技術,並通過技術手段進行優化,用以從互聯網搜索、抓取並保存任何通過HTML(超文本標記語言)進行標准化的網頁信息。

其作用機理是:發送請求給互聯網特定站點,在建立連接後與該站點交互,獲取HTML格式的信息,隨後轉移到下一個站點,並重復以上流程。通過這種自動化的工作機制,將目標數據保存在本地數據中,以供使用。網路爬蟲在訪問一個超文本鏈接時,可以從HTML標簽中自動獲取指向其他網頁的地址信息,因而可以自動實現高效、標准化的信息獲取。

隨著互聯網在人類經濟社會中的應用日益廣泛,其所涵蓋的信息規模呈指數增長,信息的形式和分布具有多樣化、全球化特徵,傳統搜索引擎技術已經無法滿足日益精細化、專業化的信息獲取和加工需求,正面臨著巨大的挑戰。網路爬蟲自誕生以來,就發展迅猛,並成為信息技術領域的主要研究熱點。當前,主流的網路爬蟲搜索策略有如下幾種。

>>>>
深度優先搜索策略

早期的爬蟲開發採用較多的搜索策略是以深度優先的,即在一個HTML文件中,挑選其中一個超鏈接標簽進行深度搜索,直至遍歷這條超鏈接到最底層時,由邏輯運算判斷本層搜索結束,隨後退出本層循環,返回上層循環並開始搜索其他的超鏈接標簽,直至初始文件內的超鏈接被遍歷。

深度優先搜索策略的優點是可以將一個Web站點的所有信息全部搜索,對嵌套較深的文檔集尤其適用;而缺點是在數據結構日益復雜的情況下,站點的縱向層級會無限增加且不同層級之間會出現交叉引用,會發生無限循環的情況,只有強行關閉程序才能退出遍歷,而得到的信息由於大量的重復和冗餘,質量很難保證。

>>>>
寬度優先搜索策略

與深度優先搜索策略相對應的是寬度優先搜索策略,其作用機理是從頂層向底層開始循環,先就一級頁面中的所有超鏈接進行搜索,完成一級頁面遍歷後再開始二級頁面的搜索循環,直到底層為止。當某一層中的所有超鏈接都被選擇過,才會基於該層信息檢索過程中所獲得的下一級超鏈接(並將其作為種子)開始新的一輪檢索,優先處理淺層的鏈接。

這種模式的一個優點是:無論搜索對象的縱向結構層級有多麼復雜,都會極大程度上避免死循環;另一個優勢則在於,它擁有特定的演算法,可以找到兩個HTML文件間最短的路徑。一般來講,我們期望爬蟲所具有的大多數功能目前均可以採用寬度優先搜索策略較容易的實現,所以它被認為是最優的。

但其缺點是:由於大量時間被耗費,寬度優先搜索策略則不太適用於要遍歷特定站點和HTML文件深層嵌套的情況。

>>>>
聚焦搜索策略

與深度優先和寬度優先不同,聚焦搜索策略是根據「匹配優先原則」對數據源進行訪問,基於特定的匹配演算法,主動選擇與需求主題相關的數據文檔,並限定優先順序,據以指導後續的數據抓取。

這類聚焦爬蟲針對所訪問任何頁面中的超鏈接都會判定一個優先順序評分,根據評分情況將該鏈接插入循環隊列,此策略能夠幫助爬蟲優先跟蹤潛在匹配程度更高的頁面,直至獲取足夠數量和質量的目標信息。不難看出,聚焦爬蟲搜索策略主要在於優先順序評分模型的設計,亦即如何區分鏈接的價值,不同的評分模型針對同一鏈接會給出不同的評分,也就直接影響到信息搜集的效率和質量。

同樣機制下,針對超鏈接標簽的評分模型自然可以擴展到針對HTML頁面的評價中,因為每一個網頁都是由大量超鏈接標簽所構成的,一般看來,鏈接價值越高,其所在頁面的價值也越高,這就為搜索引擎的搜索專業化和應用廣泛化提供了理論和技術支撐。當前,常見的聚焦搜索策略包括基於「鞏固學習」和「語境圖」兩種。

從應用程度來看,當前國內主流搜索平台主要採用的是寬度優先搜索策略,主要是考慮到國內網路系統中信息的縱向價值密度較低,而橫向價值密度較高。但是這樣會明顯地遺漏到一些引用率較小的網路文檔,並且寬度優先搜索策略的橫向價值富集效應,會導致這些鏈接量少的信息源被無限制的忽略下去。

而在此基礎上補充採用線性搜索策略則會緩解這種狀況,不斷引入更新的數據信息到已有的數據倉庫中,通過多輪的價值判斷去決定是否繼續保存該信息,而不是「簡單粗暴」地遺漏下去,將新的信息阻滯在密閉循環之外。

>>>>
網頁數據動態化

傳統的網路爬蟲技術主要局限於對靜態頁面信息的抓取,模式相對單一,而近年來,隨著Web2.0/AJAX等技術成為主流,動態頁面由於具有強大的交互能力,成為網路信息傳播的主流,並已取代了靜態頁面成為了主流。AJAX採用了JavaScript驅動的非同步(非同步)請求和響應機制,在不經過網頁整體刷新的情況下持續進行數據更新,而傳統爬蟲技術缺乏對JavaScript語義的介面和交互能力,難以觸發動態無刷新頁面的非同步調用機制並解析返回的數據內容,無法保存所需信息。

此外,諸如JQuery等封裝了JavaScript的各類前端框架會對DOM結構進行大量調整,甚至網頁上的主要動態內容均不必在首次建立請求時就以靜態標簽的形式從伺服器端發送到客戶端,而是不斷對用戶的操作進行回應並通過非同步調用的機制動態繪制出來。這種模式一方面極大地優化了用戶體驗,另一方面很大程度上減輕了伺服器的交互負擔,但卻對習慣了DOM結構(相對不變的靜態頁面)的爬蟲程序提出了巨大挑戰。

傳統爬蟲程序主要基於「協議驅動」,而在互聯網2.0時代,基於AJAX的動態交互技術環境下,爬蟲引擎必須依賴「事件驅動」才有可能獲得數據伺服器源源不斷的數據反饋。而要實現事件驅動,爬蟲程序必須解決三項技術問題:第一,JavaScript的交互分析和解釋;第二,DOM事件的處理和解釋分發;第三,動態DOM內容語義的抽取。

前嗅的ForeSpider數據採集系統全方位支持各種動態網站,大部分網站通過可視化的操作就可以獲取。對於反爬蟲機制嚴格的網站,通過ForeSpider內部的腳本語言系統,通過簡單的腳本語言,就可以輕松獲取。

>>>>
數據採集分布化

分布式爬蟲系統是在計算機集群之上運轉的爬蟲系統,集群每一個節點上運行的爬蟲程序與集中式爬蟲系統的工作原理相同,所不同的是分布式需要協調不同計算機之間的任務分工、資源分配、信息整合。分布式爬蟲系統的某一台計算機終端中植入了一個主節點,並通過它來調用本地的集中式爬蟲進行工作,在此基礎上,不同節點之間的信息交互就顯得十分重要,所以決定分布式爬蟲系統成功與否的關鍵在於能否設計和實現任務的協同。

此外,底層的硬體通信網路也十分重要。由於可以採用多節點抓取網頁,並能夠實現動態的資源分配,因此就搜索效率而言,分布式爬蟲系統遠高於集中式爬蟲系統。

經過不斷的演化,各類分布式爬蟲系統在系統構成上各具特色,工作機制與存儲結構不斷推陳出新,但主流的分布式爬蟲系統普遍運用了「主從結合」的內部構成,也就是由一個主節點通過任務分工、資源分配、信息整合來掌控其他從節點進行信息抓取。

在工作方式上,基於雲平台的廉價和高效特點,分布式爬蟲系統廣泛採用雲計算方式來降低成本,大規模降低軟硬體平台構建所需要的成本投入。在存儲方式方面,當前比較流行的是分布式信息存儲,即將文件存儲在分布式的網路系統上,這樣管理多個節點上的數據更加方便。通常情況下使用的分布式文件系統為基於Hadoop的HDFS系統。

目前市場上的可視化通用性爬蟲,大都犧牲了性能去換取簡易的可視化操作。但前嗅的ForeSpider爬蟲不是。ForeSpider採用C++編程,普通台式機日採集量超過500萬條/天,伺服器超過4000萬條/天。是市場上其他可視化爬蟲的10倍以上。同時,ForeSpider內嵌前嗅自主研發的ForeLib資料庫,免費的同時支持千萬量級以上的數據存儲。

>>>>
通用型和主題型網路爬蟲

依據採集目標的類型,網路爬蟲可以歸納為「通用型網路爬蟲」和「主題型網路爬蟲」兩種。

通用型網路爬蟲側重於採集更大的數據規模和更寬的數據范圍,並不考慮網頁採集的順序和目標網頁的主題匹配情況。在當前網路信息規模呈現指數增長的背景下,通用型網路爬蟲的使用受到信息採集速度、信息價值密度、信息專業程度的限制。

為緩解這種狀況,主題型網路爬蟲誕生了。不同於通用型網路爬蟲,主題型網路爬蟲更專注採集目標與網頁信息的匹配程度,避免無關的冗餘信息,這一篩選過程是動態的,貫穿於主題型網路爬蟲技術的整個工作流程。

目前市面上的通用性爬蟲的採集能力有限,採集能力不高,網頁結構復雜的頁面無法採集。前嗅ForeSpider爬蟲是通用型的網路爬蟲,可以採集幾乎100%的網頁,並且內部支持可視化篩選、正則表達式、腳本等多種篩選,可以100%過濾無關冗餘內容,按條件篩選內容。相對主題型爬蟲只能採集一類網站而言,通用型的爬蟲有著更強的採集范圍,更加經濟合理。

㈢ 一分鍾了解互聯網數據挖掘流程

一分鍾了解互聯網數據挖掘流程

1、爬蟲抓取網路數據

真實的數據挖掘項目,一定是從獲取數據開始的,除了通過一些渠道購買或者下載專業數據外,常常需要大家自己動手爬互聯網數據,這個時候,爬蟲就顯得格外重要了。

Nutch爬蟲的主要作用是從網路上抓取網頁數據並建立索引。我們只需指定網站的頂級網址,如taobao.com,爬蟲可以自動探測出頁面內容里新的網址,從而進一步抓取鏈接網頁數據。nutch支持把抓取的數據轉化成文本,如(PDF、word、EXCEL、HTML、XML等形式)轉換成純文字字元。

Nutch與Hadoop集成,可以將下載的數據保存到hdfs,用於後續離線分析。使用步驟為:

向hdfs中存入待抓取的網站url

$ hadoop fs -put urldir urldir

註:

第一個urldir為本地文件夾,存放了url數據文件,每行一個url地址

第二個urldir為hdfs的存儲路徑。

啟動nutch,在NUTCH_HONE目錄下執行以下命令

$ bin/nutch crawlurldir –dir crawl -depth 3 –topN 10

命令成功執行後,會在hdfs中生成crawl目錄。

2、MapRece預處理數據

對於下載的原始文本文檔,無法直接進行處理,需要對文本內容進行預處理,包括文檔切分、文本分詞、去停用詞(包括標點、數字、單字和其它一些無意義的詞)、文本特徵提取、詞頻統計、文本向量化等操作。

常用的文本預處理演算法是TF-IDF,其主要思想是,如果某個詞或短語在一篇文章中出現的頻率高,並且在其他文章中很少出現,則認為此詞或者短語具有很好的類別區分能力,適合用來做分類。

輸入原始文本內容:

Againit seems that cocoa delivered……

執行TF-IDF預處理:

hadoop jar $JAR ……

輸出文本向量:

9219:0.246 453:0.098 10322:0.21 11947:0.272 ……

每一列是詞及其權重,使用冒號分隔,例如「9219:0.246」表示編號為9219的詞,對應原始單詞為「Again」,其權重值為0.246。

3、Mahout數據挖掘

預處理後的數據就可以用來做數據挖掘。Mahout是一個很強大的數據挖掘工具,是分布式機器學習演算法的集合,包括:協同過濾、分類、聚類等。

以LDA演算法為例,它可以將文檔集中每篇文檔的主題按照概率分布的形式給出。它是一種無監督學習演算法,在訓練時不需要手工標注主題,需要的僅僅是指定主題的數量K。此外LDA的另一個優點則是,對於每一個主題均可找出一些詞語來描述它。

輸入預處理後的數據:

9219:0.246 453:0.098 ……

執行LDA挖掘演算法:

mahout cvb –k 20……

輸出挖掘結果:

topic1 {computer,technology,system,internet,machine}

topic2 {play,film,movie,star,director,proction,stage}

我們可以獲知用戶的偏好是哪些主題,這些主題是由一些關鍵片語成。

4、Sqoop導出到關系資料庫

在某些場景下,需要把數據挖掘的結果導出到關系資料庫,用於及時響應外部應用查詢。

sqoop是一個用來把hadoop和關系型資料庫中的數據相互轉移的工具,可以將一個關系型資料庫(例如:MySQL ,Oracle 等)中的數據導入到hadoop的hdfs中,也可以將hdfs的數據導出到關系型資料庫中:

sqoop export –connect jdbc:mysql://localhost:3306/zxtest –username root–password root –table result_test –export-dir /user/mr/lda/out

export操作實現把hdfs目錄/user/mr/lda/out下數據導出到mysql的result_test表。

閱讀全文

與hadoop網路爬蟲相關的資料

熱點內容
綠色壓縮文件右鍵打開 瀏覽:656
iphone拉黑提示音 瀏覽:74
銷售數據從哪裡來 瀏覽:862
什麼叫面向對象編程實例詳解 瀏覽:851
word里怎麼添加目錄 瀏覽:707
x431pro3有幾個版本 瀏覽:260
cont文件 瀏覽:482
市級保密文件保密期限最長多少年 瀏覽:666
華為手機怎麼添加面部數據 瀏覽:950
xcode常用工具 瀏覽:540
計算機網路科學出版社 瀏覽:533
汽車u盤切換不同文件夾音樂 瀏覽:709
系統恢復u盤文件 瀏覽:685
牛牛數據處理器c3教程 瀏覽:81
javascript完全參考手冊 瀏覽:890
電視機文件夾為空沒有內容為什麼 瀏覽:781
安卓手機屏幕壞了如何轉出文件 瀏覽:508
個人大數據包含哪些方面 瀏覽:281
絕地求生win10全屏 瀏覽:260
編程類研究生都有哪些 瀏覽:434

友情鏈接