亚洲精品国产美女久久久,一个人看的视频www在线观看,中文无码久久精品,真人做人试看120分钟,亚洲国产精品久久久天堂

廣告招募

網(wǎng)絡(luò)爬蟲技術(shù)淺析

2024年12月12日 11:07:29      來源:上海先予工業(yè)自動化設(shè)備有限公司 >> 進入該公司展臺      閱讀量:8

分享:

在萬維網(wǎng)飛速發(fā)展的網(wǎng)絡(luò)背景下,搜索引擎在人們的生活工作中無疑扮演著重要的角色,而網(wǎng)絡(luò)爬蟲則是搜索引擎技術(shù)的最基礎(chǔ)部分。


一、網(wǎng)絡(luò)爬蟲概述


在搜索引擎成為主流檢索工具的今天,互聯(lián)網(wǎng)上的網(wǎng)絡(luò)爬蟲各式各樣,但爬蟲爬取網(wǎng)頁的基本步驟大致相同:


1) 人工給定一個URL作為入口,從這里開始爬取。


萬維網(wǎng)的可視圖呈蝴蝶型,網(wǎng)絡(luò)爬蟲一般從蝴蝶型左邊結(jié)構(gòu)出發(fā)。這里有一些門戶網(wǎng)站的主頁,而門戶網(wǎng)站中包含大量有價值的鏈接。


2) 用運行隊列和完成隊列來保存不同狀態(tài)的鏈接。


    對于大型數(shù)據(jù)量而言,內(nèi)存中的隊列是不夠的,通常采用數(shù)據(jù)庫模擬隊列。用這種方法既可以進行海量的數(shù)據(jù)抓取,還可以擁有斷點續(xù)抓功能。


3) 線程從運行隊列讀取隊首URL,如果存在,則繼續(xù)執(zhí)行,反之則停止爬取。


4) 每處理完一個URL,將其放入完成隊列,防止重復(fù)訪問。


5) 每次抓取網(wǎng)頁之后分析其中的URL(URL是字符串形式,功能類似指針),將經(jīng)過過濾的合法鏈接寫入運行隊列,等待提取。


6) 重復(fù)步驟 3)、4)、5)。


 

1.1網(wǎng)頁搜索策略


萬維網(wǎng)高闊無邊,為了限度利用有限的資源,我們需要進行資源配置,并運用某些策略使爬蟲優(yōu)先爬取重要性較高的網(wǎng)頁。


目前主流的網(wǎng)頁搜索策略主要有三,即:深度優(yōu)先、廣度優(yōu)先、優(yōu)先。


 

深度優(yōu)先,即從起始網(wǎng)頁開始,選擇一個URL,進入,分析這個網(wǎng)頁中的URL,選擇一個再進入。如此一個鏈接一個鏈接地深入追蹤下去,處理完一條路線之后再處理下一條路線。


有一個例子是:在封建制度中,封建帝王的繼承制度是長子優(yōu)先級,長孫次之,次子隨后。即如果長子,那么長孫的優(yōu)先級比次子高。


該類爬蟲設(shè)計時較為簡單。然而深度優(yōu)先型網(wǎng)絡(luò)爬蟲存在一個問題:門戶網(wǎng)站提供的鏈接往往價值,PageRank也很高,而每深入一層,網(wǎng)頁價值和PageRank都會相應(yīng)地有所下降。這暗示了重要網(wǎng)頁通常距離種子較近,而過度深入抓取到的網(wǎng)頁卻價值很低。


由于這個缺陷,廣度優(yōu)先策略產(chǎn)生了。


 

廣度優(yōu)先(又稱寬度優(yōu)先),即從起始網(wǎng)頁開始,抓取其中所有鏈接的網(wǎng)頁,然后從中選擇一個,繼續(xù)抓取該網(wǎng)頁中的所有鏈接頁面。


網(wǎng)絡(luò)爬蟲在抓取網(wǎng)頁時普遍采用這種策略,這其中有兩個原因:


,萬維網(wǎng)的實際深度能達到17層,網(wǎng)頁之間四通八達,因此存在從一個網(wǎng)頁到另一個網(wǎng)頁的最短路徑問題。如果采用深度優(yōu)先,則有可能從一個PageRank很低的網(wǎng)頁爬取到一個PageRank實際很高的網(wǎng)頁,不方便計算PageRank(個人理解)。


第二,采用寬度優(yōu)先策略有利于多個爬蟲并行爬取。這種多爬蟲合作抓取通常是先抓取站內(nèi)鏈接,遇到站外連接就爬出去,抓取的封閉性很強。


廣度優(yōu)先策略的優(yōu)點在于其設(shè)計和實現(xiàn)相對簡單,且這種策略的基本思想是:與種子在一定距離內(nèi)的網(wǎng)頁重要度較高,符合實際。


在聚焦爬蟲的應(yīng)用中,廣度優(yōu)先策略可以與網(wǎng)頁過濾技術(shù)結(jié)合,即先用廣度優(yōu)先抓取一些網(wǎng)頁,再將其中與主題無關(guān)的過濾掉。但這種方法的缺點是隨著抓取網(wǎng)頁的增多,算法的效率會變低。


 

另外,還有一種常用于聚焦爬蟲的網(wǎng)頁搜索策略——優(yōu)先策略。


優(yōu)先,即按照某種網(wǎng)頁分析算法預(yù)測候選URL與目標(biāo)網(wǎng)頁的相似度,或主題的相關(guān)性,并選取其中評價一個或幾個URL進行進一步的爬取。


這種策略的缺陷是可能會有很多相關(guān)網(wǎng)頁被忽略,但相對的,這種策略可以將無關(guān)網(wǎng)頁數(shù)量降低30%—90%。


 

1.2對URL的獲取和處理


網(wǎng)絡(luò)爬蟲訪問的是后臺html代碼,它分析出URL之后,對其進行過濾并將結(jié)果放入運行隊列。


在取得URL時要提防一種“爬蟲陷阱”。因為即使一個URL能訪問到相應(yīng)內(nèi)容,也不能保證服務(wù)器端有一個相應(yīng)頁面存在,例如動態(tài)網(wǎng)頁的應(yīng)用可能會使網(wǎng)站中存在一些無法窮盡的地址,讓爬蟲在一個位置上無限循環(huán)而無法終結(jié)。


針對“爬蟲陷阱”,其中一種應(yīng)對方法是:檢查URL長度(或“”的數(shù)量),一旦超出某個閾值就不再獲取。


 

鏈接過濾處理涉及兩個數(shù)組,個是“必須存在的關(guān)鍵字”組。分析鏈接時,鏈接中必須存在這個數(shù)組中所有關(guān)鍵字(例如關(guān)鍵字為http和index,則httpindex符合要求,而httphtml不符合要求)。另一個是“不可存在的關(guān)鍵字”組。分析鏈接時,鏈接中必須不存在這個數(shù)組中任何一個關(guān)鍵字(例如關(guān)鍵字為index,則httpindex不符合要求)。


對關(guān)鍵字的過濾方法包括以下兩種:


1) 只取得包含給定關(guān)鍵字的鏈接,這樣取得的鏈接為內(nèi)部鏈接。


2) 只取得不包含給定關(guān)鍵字的鏈接,這樣取得的鏈接為外部鏈接。


  

1.3頁面選取問題


為提高資源利用率,我們需要盡可能提取重要的網(wǎng)頁。


網(wǎng)頁的重要程度判斷有許多依據(jù),如:鏈接的歡迎程度(通過反向鏈接判斷)、鏈接的重要度(通過某種URL函數(shù)判斷,如認為包含.com和home的URL重要度高于包含.cc和map的網(wǎng)頁)、鏈接平均深度(通過距離種子的深度判斷)、歷史權(quán)重、網(wǎng)頁質(zhì)量等。


當(dāng)需要判斷網(wǎng)頁與某些給定關(guān)鍵字的相關(guān)性時,我們需要利用網(wǎng)頁分析算法。


網(wǎng)頁分析算主要有以下三種:基于網(wǎng)頁拓補、基于網(wǎng)頁內(nèi)容、基于用戶訪問。


 

基于網(wǎng)頁拓補,即通過已知的網(wǎng)頁或數(shù)據(jù),對其有間接關(guān)系的網(wǎng)頁或網(wǎng)站做出評價的算法,這種算法廣泛應(yīng)用于實時搜索,其中又包括:網(wǎng)頁粒度分析算法、網(wǎng)站粒度分析算法、網(wǎng)頁塊粒度分析算法三種。


1、網(wǎng)頁粒度分析算法


常見的有鏈接分析算法PageRank和hits,兩者都得到網(wǎng)頁的重要度評價。


其中PageRank考慮了用戶訪問行為的隨機性和sink網(wǎng)頁,但忽略了大多數(shù)用戶訪問時具有目的性的事實。針對這個問題,hits提出了性網(wǎng)頁和中心型網(wǎng)頁兩個概念。


2、網(wǎng)站粒度分析算法


比網(wǎng)頁粒度分析算法更加簡單有效,其關(guān)鍵在于站點的劃分和評級,SiteRank的計算方法與PageRank類似。利用分布式SiteRank計算,不僅降低了單機站點的算法代價,而且克服了單獨站點對整個網(wǎng)絡(luò)覆蓋率有限的缺點。另外,SiteRank不會被常見的針對PageRank的造假所蒙騙。


3、網(wǎng)頁塊粒度分析算法


基本思想是通過某種網(wǎng)頁分割算法,將網(wǎng)頁分為不同網(wǎng)頁塊,排除其中與主題無關(guān)的鏈接后在進行進一步處理。這種分析算法可以避免廣告等噪聲鏈接的干擾。


 

基于網(wǎng)頁內(nèi)容,即利用網(wǎng)頁內(nèi)容(文本、錨文本、其他數(shù)據(jù)等)特征進行的網(wǎng)頁評價。其針對網(wǎng)頁數(shù)據(jù)形式不同可分為三類:


1、針對以文本和超鏈接為主的無結(jié)構(gòu)或結(jié)構(gòu)很簡單的網(wǎng)頁。


   隨著如今網(wǎng)頁內(nèi)容的多樣化,該方法已不再單獨使用。


2、針對從結(jié)構(gòu)化的數(shù)據(jù)源(RDBMS)動態(tài)生成的頁面,其數(shù)據(jù)不能直接批量訪問。


3、介于1和2之間的,具有較好結(jié)構(gòu),遵循一定模式或風(fēng)格,可直接訪問的網(wǎng)頁。


在提取html文檔的文本信息時要過濾標(biāo)識符,但同時還要注意依照標(biāo)識符來取得版式信息(如標(biāo)題、粗體、關(guān)鍵字等),另外還要過濾無用鏈接(如廣告鏈接)。


錨文本可以作為所在頁面內(nèi)容的評估和所指向的頁面內(nèi)容的評估,還可以收集一些搜索引擎不能索引的文件(例如圖片)。


多媒體,圖片等文件一般通過錨文本和相關(guān)文件注釋來判斷文件內(nèi)容。


對于doc、pdf等有專業(yè)廠商提供的軟件生成的文檔,廠商會會為爬蟲提供相應(yīng)的文本提取接口的插件。


 

Google對網(wǎng)頁優(yōu)先性的考慮因素有以下幾點:


1)查詢驅(qū)動的爬取


   此方法適于實時搜索。對于一些出現(xiàn)的熱門話題,或隨時變動的數(shù)據(jù)(如股市信息),數(shù)據(jù)庫里沒有這些網(wǎng)頁的信息,如果此時接受了用戶的查詢,則會通過已爬取的其他網(wǎng)頁來判斷未爬取的網(wǎng)頁的相關(guān)性。


2)反向鏈接數(shù)


3)PageRank值


4)前向鏈接數(shù)


5)路徑深度


路徑深度淺的頁面被認為更重要。


 

1.4網(wǎng)頁去重方法


網(wǎng)頁之間的鏈接關(guān)系錯綜復(fù)雜,為了避免重復(fù)抓取同一頁面,要把需要入庫的鏈接與數(shù)據(jù)庫中的運行隊列和完成隊列都進行比較。


另外,大型搜索引擎多采取多爬蟲并行合作抓取的方法,這也產(chǎn)生了一些問題。


例如Google為了避免多爬蟲合作時重復(fù)抓取同一頁面,而采用了Crawl Caching Proxy(緩存代理)。


 

網(wǎng)絡(luò)爬蟲在工作時,首先通過DNS解析一個URL的主機IP地址,然后連接相應(yīng)服務(wù)器的端口并發(fā)送請求,通過服務(wù)器響應(yīng)來獲取相關(guān)頁面內(nèi)容。


URL與IP之間的對應(yīng)關(guān)系可能是一對一、一對多或多對一的。


一個URL對應(yīng)多個IP通常出現(xiàn)在訪問量較大的域名,將一個URL與多個IP綁定以分流訪問量,減小單個服務(wù)器的訪問壓力(如、Google);一個IP對應(yīng)多個URL則是出于節(jié)約服務(wù)器的目的,或是由于公網(wǎng)IP地址匱乏而產(chǎn)生的策略,當(dāng)客戶端對該IP進行訪問時,先通過請求的協(xié)議頭部來獲取需要訪問的URL,再將該請求通過反向代理或虛擬主機的方式轉(zhuǎn)發(fā)到相應(yīng)服務(wù)。


由于這種情況,若用IP作為判斷重復(fù)網(wǎng)頁的標(biāo)準(zhǔn),則可能因為URL與IP的一對多而出現(xiàn)重復(fù)獲取,或因為URL與IP的多對一而出現(xiàn)遺漏。因此,爬蟲在判斷重復(fù)頁面時主要以URL所謂判斷標(biāo)準(zhǔn),以保證服務(wù)的性。


 

1.5網(wǎng)絡(luò)爬蟲的效率


單線程的爬蟲由于頁面的分析和下載不能同時而效率較低,因此出現(xiàn)了多線程爬蟲。有一個例子可以幫助理解多線程的意義:現(xiàn)在很多下載軟件都支持多線程同步下載,即將下載內(nèi)容分成幾部分同步下載,速度比單線程要快上很多。


爬蟲采用線程進行循環(huán),但這存在一定弊端:一旦發(fā)生網(wǎng)絡(luò)阻塞,整個線程就一直處于等待狀態(tài)而導(dǎo)致死亡。


一般采取線程監(jiān)控的方法來解決,即存在一個主線程和一個監(jiān)控線程,監(jiān)控線程每隔一段時間去訪問一次主線程并與其分享的變量,一旦發(fā)現(xiàn)超時,就認為網(wǎng)絡(luò)阻塞,這時終止主線程并重新啟動,由此避免了網(wǎng)絡(luò)阻塞導(dǎo)致線程一直等待的問題。


 

1.6網(wǎng)頁更新


對于搜索引擎而言,評價網(wǎng)絡(luò)爬蟲效率的一個重要標(biāo)準(zhǔn)是爬蟲的開銷。


爬蟲開銷 = 重復(fù)抓取的老頁面數(shù)  發(fā)掘的新頁面數(shù)


即是說,爬蟲應(yīng)當(dāng)盡量發(fā)掘新頁面而減少重復(fù)頁面的爬取,而決定對某個網(wǎng)頁的更新頻率涉及到時間更新控制。


一般做法是將這次抓取到的頁面上的數(shù)據(jù)與上一次相比較,如果進行連續(xù)五次這樣的比較都沒有變化,則將以后爬取該網(wǎng)頁的時間擴大為原來的2倍;如果進行連續(xù)五次這樣的比較都有變化,則將以后爬取該網(wǎng)頁的時間縮短為原來的12。


另外,爬蟲在更新網(wǎng)頁內(nèi)容時,不需要將網(wǎng)頁重新抓取一遍,只需對網(wǎng)頁的一些屬性加以判斷(如日期),并與上次結(jié)果相比即可,如果相同則無需更新。


 

1.7實時搜索


設(shè)想當(dāng)用戶查詢一個熱門話題,而爬蟲還未抓取相關(guān)網(wǎng)頁,這時就不能在用PageRank來評價網(wǎng)頁重要性了。PageRank的計算對象是已經(jīng)抓取下來的網(wǎng)頁,即,在計算PageRank過程中不會有新頁面加入,這種方法被稱為“離線”(off-line)的計算方法。這種方法適合于對結(jié)果的排序,但不適用于爬蟲的調(diào)度(即動態(tài)決定URL的抓取順序),因而誕生了一種OPIC (On-line Page Importance Computation)的新型算法策略。


OPIC的基本思想是:每個頁面有一個初始cash,在抓取過程中,通過前向鏈接將cash平均分給該網(wǎng)頁指向的所有頁面(分配過程一次完成),而爬蟲在爬取過程中只需優(yōu)先抓取cash較多的頁面。


 

1.8其他


1、對于一些出售資料的網(wǎng)站,他們希望搜索引擎能所引導(dǎo)他們的資料,但又不能無償將資料的全部內(nèi)容提供給搜索用戶。因此,他們?yōu)榫W(wǎng)絡(luò)爬蟲提供了專門的用戶名和密碼,設(shè)置一定的權(quán)限,是爬蟲能夠?qū)W(wǎng)頁進行爬取而又不會讓用戶看到全部內(nèi)容(用戶點開網(wǎng)頁時,需要提供權(quán)限驗證)。


2、每個網(wǎng)絡(luò)爬蟲都有自己的名字。在抓取網(wǎng)頁時會向服務(wù)器端發(fā)送請求,該請求中包含一個用于表示爬蟲身份的字段,這個請求會留在訪問日志記錄中,便于網(wǎng)站管理員查看。


3、爬蟲進入網(wǎng)站時會先訪問網(wǎng)站服務(wù)器根目錄下的robots.txt,這個協(xié)議告訴爬蟲網(wǎng)站中那些內(nèi)容希望被抓取,那些內(nèi)容不希望被抓取。該協(xié)議不具備強制力。


 

二、網(wǎng)絡(luò)爬蟲實例


2.1 Heritrix


Heritrix是一個爬蟲框架,可以加入一些可互換的組件。Heritrix是用來獲取完整精確的網(wǎng)站內(nèi)容的爬蟲,除文本內(nèi)容之外,它還獲取其他非文本內(nèi)容(如圖片等)并對其進行處理,且不對網(wǎng)頁內(nèi)容進行修改。當(dāng)重復(fù)爬行相同URL時,不會對先前網(wǎng)頁進行替換。


Heritrix主要有以下幾步:


1)在預(yù)定的URL中選擇一個并獲取。


2)分析,并將結(jié)果歸檔。


3)選擇已經(jīng)發(fā)現(xiàn)的感興趣的URL,加入運行隊列。


4)標(biāo)記已經(jīng)處理過的URL


Heritrix利用廣度優(yōu)先策略來進行網(wǎng)頁獲取,其主要部件都具有高效性和可擴展性。然而Heritrix也有其一定的局限性,如:


只支持單線程爬蟲,多爬蟲之間不能合作;


操作復(fù)雜,對有限的資源來說是一個問題;


在硬件是系統(tǒng)失敗時,其恢復(fù)能力較差等等。


 

2.2 Nutch


Nutch深度遍歷網(wǎng)站資源,將這些資源抓取到本地,使用的方法都是分析網(wǎng)站每一個有效的URL并向服務(wù)器端提交請求來獲得相應(yīng)結(jié)果,生成本地文件及相應(yīng)的日志信息等。


Nutch與Heritrix有幾點差異,即:


1)Nutch只獲取并保存可索引的內(nèi)容。


2)Nutch 可以修剪內(nèi)容,或者對內(nèi)容格式進行轉(zhuǎn)換。


3)Nutch 保存內(nèi)容為數(shù)據(jù)庫優(yōu)化格式,便于以后索引;且對重復(fù)URL,刷新替換舊的內(nèi)容。


4)Nutch 從命令行運行、控制。


5)Nutch 的定制能力不夠強(不過現(xiàn)在已經(jīng)有了一定改進)。


 

2.3 Larbin


Larbin不同于以上兩種網(wǎng)絡(luò)爬蟲,它只抓取網(wǎng)頁,而不提供包括分析網(wǎng)頁、將結(jié)果存儲到數(shù)據(jù)庫以及建立索引等服務(wù)。


Larbin的目的是對頁面上的URL進行擴展性的抓取,為搜索引擎提供廣泛的數(shù)據(jù)來源。雖然工作能力較為單一,但Larbin勝在其高度可配置性和良好的工作效率(一個簡單的larbin的爬蟲可以每天獲?。担埃叭f的網(wǎng)頁),這也是Larbin最初的設(shè)計理念。


 

2.4 Lucene


Lucene 是一個基于Java的全文信息檢索工具包,它本身不是一個完整的全文索引應(yīng)用程序,而是為各種應(yīng)用程序提供索引和搜索功能。只要能把要索引的數(shù)據(jù)轉(zhuǎn)化的文本格式,Lucene 就能對該文檔進行索引和搜索。


Lucene采用的是一種稱為反向索引(inverted index)的方法。因此,在用戶輸入查詢條件的時候,Lucebne能非??斓氐玫剿阉鹘Y(jié)果。


對文檔建立好索引后,搜索引擎首先會對關(guān)鍵詞進行解析,然后在建立好的索引上面進行查找并返回和用戶輸入的關(guān)鍵詞相關(guān)聯(lián)的文檔。


上海先予工業(yè)自動化設(shè)備有限公司以自主核心技術(shù)和系統(tǒng)集成優(yōu)勢為依托,針對企業(yè)用戶在生產(chǎn)過程控制中的各種復(fù)雜控制要求,采用DCS和PLC等控制系統(tǒng)為企業(yè)量身定制,技術(shù)、可靠性高、經(jīng)濟實用的電氣和自動化控制,生產(chǎn),輸送,包裝、清洗系統(tǒng),提供完整的非標(biāo)制定自動化生產(chǎn)解決方案,從而有效為企業(yè)降低勞動力成本、提高品質(zhì)、提升效率。

 


版權(quán)與免責(zé)聲明:
1.凡本網(wǎng)注明"來源:全球供應(yīng)網(wǎng)"的所有作品,版權(quán)均屬于興旺寶裝備總站,轉(zhuǎn)載請必須注明興旺寶裝備總站。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
2.企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
3.本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權(quán)等法律責(zé)任。 4.如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系。