1. 網路爬蟲的基本原理以及作用
網路爬蟲(又被稱為網頁蜘蛛,網路機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動的抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻,自動索引,模擬程序或者蠕蟲.
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。 相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題: (1) 對抓取目標的描述或定義; (2) 對網頁或數據的分析與過濾; (3) 對URL的搜索策略。 抓取目標的描述和定義是決定網頁分析演算法與URL搜索策略如何制訂的基礎。而網頁分析演算法和候選URL排序演算法是決定搜索引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。這兩個部分的演算法又是緊密相關的。
2. python爬蟲是什麼
Python爬蟲是指在某種原因進行互聯網請求獲取信息
3. 一個網站除了百度以外爬蟲其爬蟲是那哪些呀
一搜蜘蛛,搜狗蜘蛛,AhrefsAhrefs蜘蛛,谷歌蜘蛛,360蜘蛛,網路,微軟bing,雅虎蜘蛛
答案滿意採納下唄,順便點個贊~謝啦
4. 網路爬蟲主要能幹啥
網路爬蟲是一種互聯網機器人,它通過爬取互聯網上網站的內容來工作。它是用計算機語言編寫的程序或腳本,用於自動從Internet上獲取任何信息或數據。機器人掃描並抓取每個所需頁面上的某些信息,直到處理完所有能正常打開的頁面。
網路爬蟲大致有4種類型的結構:通用網路爬蟲、聚焦網路爬蟲、增量式網路爬蟲、深層網路爬蟲 。
1、通用Web爬蟲
通用網路爬蟲所爬取的目標數據是巨大的,並且爬行的范圍也是非常大的,正是由於其爬取的數據是海量數據,故而對於這類爬蟲來說,其爬取的性能要求是非常高的。這種網路爬蟲主要應用於大型搜索引擎中,有非常高的應用價值。 或者應用於大型數據提供商。
2、聚焦網路爬蟲
聚焦網路爬蟲是按照預先定義好的主題有選擇地進行網頁爬取的一種爬蟲,聚焦網路爬蟲不像通用網路爬蟲一樣將目標資源定位在全互聯網中,而是將爬取的目標網頁定位在與主題相關的頁面中,此時,可以大大節省爬蟲爬取時所需的帶寬資源和伺服器資源。聚焦網路爬蟲主要應用在對特定信息的爬取中,主要為某一類特定的人群提供服務。
3、增量Web爬蟲
增量式網路爬蟲,在爬取網頁的時候,只爬取內容發生變化的網頁或者新產生的網頁,對於未發生內容變化的網頁,則不會爬取。增量式網路爬蟲在一定程度上能夠保證所爬取的頁面,盡可能是新頁面。
4、深層網路爬蟲
在互聯網中,網頁按存在方式分類,可以分為表層頁面和深層頁面。所謂的表層頁面,指的是不需要提交表單,使用靜態的鏈接就能夠到達的靜態頁面;而深層頁面則隱藏在表單後面,不能通過靜態鏈接直接獲取,是需要提交一定的關鍵詞之後才能夠獲取得到的頁面。在互聯網中,深層頁面的數量往往比表層頁面的數量要多很多,故而,我們需要想辦法爬取深層頁面。
由於互聯網和物聯網的蓬勃發展,人與網路之間的互動正在發生。每次我們在互聯網上搜索時,網路爬蟲都會幫助我們獲取所需的信息。此外,當需要從Web訪問大量非結構化數據時,我們可以使用Web爬網程序來抓取數據。
1、Web爬蟲作為搜索引擎的重要組成部分
使用聚焦網路爬蟲實現任何門戶網站上的搜索引擎或搜索功能。它有助於搜索引擎找到與搜索主題具有最高相關性的網頁。
對於搜索引擎,網路爬蟲有幫助,為用戶提供相關且有效的內容, 創建所有訪問頁面的快照以供後續處理。
2、建立數據集
網路爬蟲的另一個好用途是建立數據集以用於研究,業務和其他目的。
· 了解和分析網民對公司或組織的行為
· 收集營銷信息,並在短期內更好地做出營銷決策。
· 從互聯網收集信息並分析它們進行學術研究。
· 收集數據,分析一個行業的長期發展趨勢。
· 監控競爭對手的實時變化
5. 誰能仔細解釋一下網路爬蟲
1 爬蟲技術研究綜述
引言�
隨著網路的迅速發展,萬維網成為大量信息的載體,如何有效地提取並利用這些信息成為一個巨大的挑戰。搜索引擎(Search Engine),例如傳統的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個輔助人們檢索信息的工具成為用戶訪問萬維網的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性,如:�
(1) 不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結果包含大量用戶不關心的網頁。�
(2) 通用搜索引擎的目標是盡可能大的網路覆蓋率,有限的搜索引擎伺服器資源與無限的網路數據資源之間的矛盾將進一步加深。�
(3) 萬維網數據形式的豐富和網路技術的不斷發展,圖片、資料庫、音頻/視頻多媒體等不同數據大量出現,通用搜索引擎往往對這些信息含量密集且具有一定結構的數據無能為力,不能很好地發現和獲取。�
(4) 通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出的查詢。�
為了解決上述問題,定向抓取相關網頁資源的聚焦爬蟲應運而生。聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。與通用爬蟲(general�purpose web crawler)不同,聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢准備數據資源。�
1 聚焦爬蟲工作原理及關鍵技術概述�
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件,如圖1(a)流程圖所示。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止,如圖1(b)所示。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。�
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:�
(1) 對抓取目標的描述或定義;�
(2) 對網頁或數據的分析與過濾;�
(3) 對URL的搜索策略。�
抓取目標的描述和定義是決定網頁分析演算法與URL搜索策略如何制訂的基礎。而網頁分析演算法和候選URL排序演算法是決定搜索引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。這兩個部分的演算法又是緊密相關的。�
2 抓取目標描述�
現有聚焦爬蟲對抓取目標的描述可分為基於目標網頁特徵、基於目標數據模式和基於領域概念3種。�
基於目標網頁特徵的爬蟲所抓取、存儲並索引的對象一般為網站或網頁。根據種子樣本獲取方式可分為:�
(1) 預先給定的初始抓取種子樣本;�
(2) 預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等;�
(3) 通過用戶行為確定的抓取目標樣例,分為:�
a) 用戶瀏覽過程中顯示標注的抓取樣本;�
b) 通過用戶日誌挖掘得到訪問模式及相關樣本。�
其中,網頁特徵可以是網頁的內容特徵,也可以是網頁的鏈接結構特徵,等等。�
現有的聚焦爬蟲對抓取目標的描述或定義可以分為基於目標網頁特徵,基於目標數據模式和基於領域概念三種。�
基於目標網頁特徵的爬蟲所抓取、存儲並索引的對象一般為網站或網頁。具體的方法根據種子樣本的獲取方式可以分為:(1)預先給定的初始抓取種子樣本;(2)預先給定的網頁分類目錄和與分類目錄對應的種子樣本,如Yahoo!分類結構等;(3)通過用戶行為確定的抓取目標樣例。其中,網頁特徵可以是網頁的內容特徵,也可以是網頁的鏈接結構特徵,等等。�
作者: 齊保元 2006-1-10 10:11 回復此發言
--------------------------------------------------------------------------------
2 爬蟲技術研究綜述
基於目標數據模式的爬蟲針對的是網頁上的數據,所抓取的數據一般要符合一定的模式,或者可以轉化或映射為目標數據模式。�
另一種描述方式是建立目標領域的本體或詞典,用於從語義角度分析不同特徵在某一主題中的重要程度。�
3 網頁搜索策略�
網頁的抓取策略可以分為深度優先、廣度優先和最佳優先三種。深度優先在很多情況下會導致爬蟲的陷入(trapped)問題,目前常見的是廣度優先和最佳優先方法。�
3.1 廣度優先搜索策略�
廣度優先搜索策略是指在抓取過程中,在完成當前層次的搜索後,才進行下一層次的搜索。該演算法的設計和實現相對簡單。在目前為覆蓋盡可能多的網頁,一般使用廣度優先搜索方法。也有很多研究將廣度優先搜索策略應用於聚焦爬蟲中。其基本思想是認為與初始URL在一定鏈接距離內的網頁具有主題相關性的概率很大。另外一種方法是將廣度優先搜索與網頁過濾技術結合使用,先用廣度優先策略抓取網頁,再將其中無關的網頁過濾掉。這些方法的缺點在於,隨著抓取網頁的增多,大量的無關網頁將被下載並過濾,演算法的效率將變低。�
3.2 最佳優先搜索策略�
最佳優先搜索策略按照一定的網頁分析演算法,預測候選URL與目標網頁的相似度,或與主題的相關性,並選取評價最好的一個或幾個URL進行抓取。它只訪問經過網頁分析演算法預測為「有用」的網頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關網頁可能被忽略,因為最佳優先策略是一種局部最優搜索演算法。因此需要將最佳優先結合具體的應用進行改進,以跳出局部最優點。將在第4節中結合網頁分析演算法作具體的討論。研究表明,這樣的閉環調整可以將無關網頁數量降低30%~90%。�
4 網頁分析演算法�
網頁分析演算法可以歸納為基於網路拓撲、基於網頁內容和基於用戶訪問行為三種類型。�
4.1 基於網路拓撲的分析演算法�
基於網頁之間的鏈接,通過已知的網頁或數據,來對與其有直接或間接鏈接關系的對象(可以是網頁或網站等)作出評價的演算法。又分為網頁粒度、網站粒度和網頁塊粒度這三種。�
4.1.1 網頁(Webpage)粒度的分析演算法�
PageRank和HITS演算法是最常見的鏈接分析演算法,兩者都是通過對網頁間鏈接度的遞歸和規范化計算,得到每個網頁的重要度評價。PageRank演算法雖然考慮了用戶訪問行為的隨機性和Sink網頁的存在,但忽略了絕大多數用戶訪問時帶有目的性,即網頁和鏈接與查詢主題的相關性。針對這個問題,HITS演算法提出了兩個關鍵的概念:權威型網頁(authority)和中心型網頁(hub)。�
基於鏈接的抓取的問題是相關頁面主題團之間的隧道現象,即很多在抓取路徑上偏離主題的網頁也指向目標網頁,局部評價策略中斷了在當前路徑上的抓取行為。文獻[21]提出了一種基於反向鏈接(BackLink)的分層式上下文模型(Context Model),用於描述指向目標網頁一定物理跳數半徑內的網頁拓撲圖的中心Layer0為目標網頁,將網頁依據指向目標網頁的物理跳數進行層次劃分,從外層網頁指向內層網頁的鏈接稱為反向鏈接。�
4.1.2 網站粒度的分析演算法�
網站粒度的資源發現和管理策略也比網頁粒度的更簡單有效。網站粒度的爬蟲抓取的關鍵之處在於站點的劃分和站點等級(SiteRank)的計算。SiteRank的計算方法與PageRank類似,但是需要對網站之間的鏈接作一定程度抽象,並在一定的模型下計算鏈接的權重。�
網站劃分情況分為按域名劃分和按IP地址劃分兩種。文獻[18]討論了在分布式情況下,通過對同一個域名下不同主機、伺服器的IP地址進行站點劃分,構造站點圖,利用類似PageRank的方法評價SiteRank。同時,根據不同文件在各個站點上的分布情況,構造文檔圖,結合SiteRank分布式計算得到DocRank。文獻[18]證明,利用分布式的SiteRank計算,不僅大大降低了單機站點的演算法代價,而且克服了單獨站點對整個網路覆蓋率有限的缺點。附帶的一個優點是,常見PageRank 造假難以對SiteRank進行欺騙。�
4.1.3 網頁塊粒度的分析演算法�
在一個頁面中,往往含有多個指向其他頁面的鏈接,這些鏈接中只有一部分是指向主題相關網頁的,或根據網頁的鏈接錨文本表明其具有較高重要性。但是,在PageRank和HITS演算法中,沒有對這些鏈接作區分,因此常常給網頁分析帶來廣告等雜訊鏈接的干擾。在網頁塊級別(Block�level)進行鏈接分析的演算法的基本思想是通過VIPS網頁分割演算法將網頁分為不同的網頁塊(page block),然後對這些網頁塊建立page�to�block和block�to�page的鏈接矩陣,�分別記為Z和X。於是,在page�to�page圖上的網頁塊級別的PageRank為�W�p=X×Z;�在block�to�block圖上的BlockRank為�W�b=Z×X。�已經有人實現了塊級別的PageRank和HITS演算法,並通過實驗證明,效率和准確率都比傳統的對應演算法要好。�
4.2 基於網頁內容的網頁分析演算法�
基於網頁內容的分析演算法指的是利用網頁內容(文本、數據等資源)特徵進行的網頁評價。網頁的內容從原來的以超文本為主,發展到後來動態頁面(或稱為Hidden Web)數據為主,後者的數據量約為直接可見頁面數據(PIW,Publicly Indexable Web)的400~500倍。另一方面,多媒體數據、Web Service等各種網路資源形式也日益豐富。因此,基於網頁內容的分析演算法也從原來的較為單純的文本檢索方法,發展為涵蓋網頁數據抽取、機器學習、數據挖掘、語義理解等多種方法的綜合應用。本節根據網頁數據形式的不同,將基於網頁內容的分析演算法,歸納以下三類:第一種針對以文本和超鏈接為主的無結構或結構很簡單的網頁;第二種針對從結構化的數據源(如RDBMS)動態生成的頁面,其數據不能直接批量訪問;第三種針對的數據界於第一和第二類數據之間,具有較好的結構,顯示遵循一定模式或風格,且可以直接訪問。�
4.2.1 基於文本的網頁分析演算法�
1) 純文本分類與聚類演算法 �
很大程度上借用了文本檢索的技術。文本分析演算法可以快速有效的對網頁進行分類和聚類,但是由於忽略了網頁間和網頁內部的結構信息,很少單獨使用。�
2) 超文本分類和聚類演算法�
網頁文本還具有大量的
6. Python有哪些常見的,好用的爬蟲框架
網路爬蟲的抓取策略有很多種,按照系統結構和實現技術,大致可以分為以下幾種:通用網路爬蟲(GeneralPurposeWebCrawler)、聚焦網路爬蟲(FocusedWebCrawler)、增量式網路爬蟲(IncrementalWebCrawler)、深層網路爬蟲(DeepWebCrawler)。
增量式網路爬蟲是指對已下載網頁採取增量式更新和只爬行新產生的或者已經發生變化網頁的爬蟲,它能夠在一定程度上保證所爬行的頁面是盡可能新的頁面。
一般網路爬蟲的爬行范圍和數量很大,爬行速度和存儲空間要求很高,爬行頁面的順序也比較低。同時,由於需要刷新的頁面太多,通常採用並行工作,但刷新一頁需要很長時間。
聚焦網路爬蟲是指選擇性地爬行與預定義主題相關的網路爬蟲。與普通網路爬蟲相比,聚焦爬蟲只需爬行與主題相關的網頁,大大節省了硬體和網路資源,保存的網頁也因數量少而更新快,還能很好地滿足一些特定人群對特定領域信息的需求。
DeepWeb爬蟲,也就是深層網頁爬蟲,在深層網頁容量是表層網頁的數百倍,是互聯網上最大、發展最快的新信息資源。
7. 網路爬蟲的原理
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:
(1) 對抓取目標的描述或定義;
(2) 對網頁或數據的分析與過濾;
(3) 對URL的搜索策略。
抓取目標的描述和定義是決定網頁分析演算法與URL搜索策略如何制訂的基礎。而網頁分析演算法和候選URL排序演算法是決定搜索引擎所提供的服務形式和爬蟲網頁抓取行為的關鍵所在。這兩個部分的演算法又是緊密相關的。
8. 請問什麼是網路爬蟲啊是干什麼的呢
網路爬蟲(Web crawler)也叫網路蜘蛛(Web spider)、螞蟻(ant)、自動檢索工具(automatic indexer),或者(在FOAF軟體概念中)網路疾走(WEB scutter),是一種「自動化瀏覽網路」的程序,或者說是一種網路機器人。
用途:它們被廣泛用於互聯網搜索引擎或其他類似網站,以獲取或更新這些網站的內容和檢索方式。它們可以自動採集所有其能夠訪問到的頁面內容,以供搜索引擎做進一步處理(分檢整理下載的頁面),而使得用戶能更快的檢索到他們需要的信息。
9. 網路爬蟲論文
1、爬蟲技術概述
網路爬蟲(Web crawler),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本,它們被廣泛用於互聯網搜索引擎或其他類似網站,可以自動採集所有其能夠訪問到的頁面內容,以獲取或更新這些網站的內容和檢索方式。從功能上來講,爬蟲一般分為數據採集,處理,儲存三個部分。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:
(1) 對抓取目標的描述或定義;
(2) 對網頁或數據的分析與過濾;
(3) 對URL的搜索策略。
2、爬蟲原理
2.1 網路爬蟲原理
Web網路爬蟲系統的功能是下載網頁數據,為搜索引擎系統提供數據來源。很多大型的網路搜索引擎系統都被稱為基於 Web數據採集的搜索引擎系統,比如 Google、Bai。由此可見Web 網路爬蟲系統在搜索引擎中的重要性。網頁中除了包含供用戶閱讀的文字信息外,還包含一些超鏈接信息。Web網路爬蟲系統正是通過網頁中的超連接信息不斷獲得網路上的其它網頁。正是因為這種採集過程像一個爬蟲或者蜘蛛在網路上漫遊,所以它才被稱為網路爬蟲系統或者網路蜘蛛系統,在英文中稱為Spider或者Crawler。
2.3.2寬度優先遍歷策略
寬度優先遍歷策略的基本思路是,將新下載網頁中發現的鏈接直接插入待抓取URL隊列的末尾。也就是指網路爬蟲會先抓取起始網頁中鏈接的所有網頁,然後再選擇其中的一個鏈接網頁,繼續抓取在此網頁中鏈接的所有網頁。還是以上面的圖為例:
遍歷路徑:A-B-C-D-E-F G H I
2.3.3反向鏈接數策略
反向鏈接數是指一個網頁被其他網頁鏈接指向的數量。反向鏈接數表示的是一個網頁的內容受到其他人的推薦的程度。因此,很多時候搜索引擎的抓取系統會使用這個指標來評價網頁的重要程度,從而決定不同網頁的抓取先後順序。
在真實的網路環境中,由於廣告鏈接、作弊鏈接的存在,反向鏈接數不能完全等他我那個也的重要程度。因此,搜索引擎往往考慮一些可靠的反向鏈接數。
2.3.4Partial PageRank策略
Partial PageRank演算法借鑒了PageRank演算法的思想:對於已經下載的網頁,連同待抓取URL隊列中的URL,形成網頁集合,計算每個頁面的PageRank值,計算完之後,將待抓取URL隊列中的URL按照PageRank值的大小排列,並按照該順序抓取頁面。
如果每次抓取一個頁面,就重新計算PageRank值,一種折中方案是:每抓取K個頁面後,重新計算一次PageRank值。但是這種情況還會有一個問題:對於已經下載下來的頁面中分析出的鏈接,也就是我們之前提到的未知網頁那一部分,暫時是沒有PageRank值的。為了解決這個問題,會給這些頁面一個臨時的PageRank值:將這個網頁所有入鏈傳遞進來的PageRank值進行匯總,這樣就形成了該未知頁面的PageRank值,從而參與排序。下面舉例說明:
2.3.5OPIC策略策略
該演算法實際上也是對頁面進行一個重要性打分。在演算法開始前,給所有頁面一個相同的初始現金(cash)。當下載了某個頁面P之後,將P的現金分攤給所有從P中分析出的鏈接,並且將P的現金清空。對於待抓取URL隊列中的所有頁面按照現金數進行排序。
2.3.6大站優先策略
對於待抓取URL隊列中的所有網頁,根據所屬的網站進行分類。對於待下載頁面數多的網站,優先下載。這個策略也因此叫做大站優先策略。
3、爬蟲分類
開發網路爬蟲應該選擇Nutch、Crawler4j、WebMagic、scrapy、WebCollector還是其他的?上面說的爬蟲,基本可以分3類:
(1)分布式爬蟲:Nutch
(2)JAVA爬蟲:Crawler4j、WebMagic、WebCollector
(3)非JAVA爬蟲:scrapy(基於Python語言開發)
3.1 分布式爬蟲
爬蟲使用分布式,主要是解決兩個問題:
1)海量URL管理
2)網速
現在比較流行的分布式爬蟲,是Apache的Nutch。但是對於大多數用戶來說,Nutch是這幾類爬蟲里,最不好的選擇,理由如下:
1)Nutch是為搜索引擎設計的爬蟲,大多數用戶是需要一個做精準數據爬取(精抽取)的爬蟲。Nutch運行的一套流程里,有三分之二是為了搜索引擎而設計的。對精抽取沒有太大的意義。也就是說,用Nutch做數據抽取,會浪費很多的時間在不必要的計算上。而且如果你試圖通過對Nutch進行二次開發,來使得它適用於精抽取的業務,基本上就要破壞Nutch的框架,把Nutch改的面目全非,有修改Nutch的能力,真的不如自己重新寫一個分布式爬蟲框架了。
2)Nutch依賴hadoop運行,hadoop本身會消耗很多的時間。如果集群機器數量較少,爬取速度反而不如單機爬蟲快。
3)Nutch雖然有一套插件機制,而且作為亮點宣傳。可以看到一些開源的Nutch插件,提供精抽取的功能。但是開發過Nutch插件的人都知道,Nutch的插件系統有多蹩腳。利用反射的機制來載入和調用插件,使得程序的編寫和調試都變得異常困難,更別說在上面開發一套復雜的精抽取系統了。而且Nutch並沒有為精抽取提供相應的插件掛載點。Nutch的插件有隻有五六個掛載點,而這五六個掛載點都是為了搜索引擎服務的,並沒有為精抽取提供掛載點。大多數Nutch的精抽取插件,都是掛載在「頁面解析」(parser)這個掛載點的,這個掛載點其實是為了解析鏈接(為後續爬取提供URL),以及為搜索引擎提供一些易抽取的網頁信息(網頁的meta信息、text文本)。
4)用Nutch進行爬蟲的二次開發,爬蟲的編寫和調試所需的時間,往往是單機爬蟲所需的十倍時間不止。了解Nutch源碼的學習成本很高,何況是要讓一個團隊的人都讀懂Nutch源碼。調試過程中會出現除程序本身之外的各種問題(hadoop的問題、hbase的問題)。
5)很多人說Nutch2有gora,可以持久化數據到avro文件、hbase、mysql等。很多人其實理解錯了,這里說的持久化數據,是指將URL信息(URL管理所需要的數據)存放到avro、hbase、mysql。並不是你要抽取的結構化數據。其實對大多數人來說,URL信息存在哪裡無所謂。
6)Nutch2的版本目前並不適合開發。官方現在穩定的Nutch版本是nutch2.2.1,但是這個版本綁定了gora-0.3。如果想用hbase配合nutch(大多數人用nutch2就是為了用hbase),只能使用0.90版本左右的hbase,相應的就要將hadoop版本降到hadoop 0.2左右。而且nutch2的官方教程比較有誤導作用,Nutch2的教程有兩個,分別是Nutch1.x和Nutch2.x,這個Nutch2.x官網上寫的是可以支持到hbase 0.94。但是實際上,這個Nutch2.x的意思是Nutch2.3之前、Nutch2.2.1之後的一個版本,這個版本在官方的SVN中不斷更新。而且非常不穩定(一直在修改)。
所以,如果你不是要做搜索引擎,盡量不要選擇Nutch作為爬蟲。有些團隊就喜歡跟風,非要選擇Nutch來開發精抽取的爬蟲,其實是沖著Nutch的名氣(Nutch作者是Doug Cutting),當然最後的結果往往是項目延期完成。
如果你是要做搜索引擎,Nutch1.x是一個非常好的選擇。Nutch1.x和solr或者es配合,就可以構成一套非常強大的搜索引擎了。如果非要用Nutch2的話,建議等到Nutch2.3發布再看。目前的Nutch2是一個非常不穩定的版本。
10. 什麼是網路爬蟲能不能給具體介紹一下
1 爬蟲技術研究綜述
引言�
隨著網路的迅速發展,萬維網成為大量信息的載體,如何有效地提取並利用這些信息成為一個巨大的挑戰。搜索引擎(Search Engine),例如傳統的通用搜索引擎AltaVista,Yahoo!和Google等,作為一個輔助人們檢索信息的工具成為用戶訪問萬維網的入口和指南。但是,這些通用性搜索引擎也存在著一定的局限性,如:�
(1) 不同領域、不同背景的用戶往往具有不同的檢索目的和需求,通用搜索引擎所返回的結果包含大量用戶不關心的網頁。�
(2) 通用搜索引擎的目標是盡可能大的網路覆蓋率,有限的搜索引擎伺服器資源與無限的網路數據資源之間的矛盾將進一步加深。�
(3) 萬維網數據形式的豐富和網路技術的不斷發展,圖片、資料庫、音頻/視頻多媒體等不同數據大量出現,通用搜索引擎往往對這些信息含量密集且具有一定結構的數據無能為力,不能很好地發現和獲取。�
(4) 通用搜索引擎大多提供基於關鍵字的檢索,難以支持根據語義信息提出的查詢。�
為了解決上述問題,定向抓取相關網頁資源的聚焦爬蟲應運而生。聚焦爬蟲是一個自動下載網頁的程序,它根據既定的抓取目標,有選擇的訪問萬維網上的網頁與相關的鏈接,獲取所需要的信息。與通用爬蟲(general�purpose web crawler)不同,聚焦爬蟲並不追求大的覆蓋,而將目標定為抓取與某一特定主題內容相關的網頁,為面向主題的用戶查詢准備數據資源。�
1 聚焦爬蟲工作原理及關鍵技術概述�
網路爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件,如圖1(a)流程圖所示。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止,如圖1(b)所示。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之後的查詢和檢索;對於聚焦爬蟲來說,這一過程所得到的分析結果還可能對以後的抓取過程給出反饋和指導。�
相對於通用網路爬蟲,聚焦爬蟲還需要解決三個主要問題:�
(1) 對抓取目標的描述或定義;�
(2) 對網頁%B