爬蟲程序

姓名:李昕洲? ? ? 學(xué)號:16030120026

轉(zhuǎn)載自:https://zm8.sm-tc.cn/?src=l4uLj8XQ0IiIiNGIks3M0ZyQktCIlpSW0MvGx8rRl4uS&uid=7c489bcac4552c5cf349189265da1b8f&hid=b5c9635a45773fd6223a0717b163843e&pos=1&cid=9&time=1513253736253&from=click&restype=1&pagetype=0000000000000404&bu=web&query=%E7%88%AC%E8%99%AB&mode=&v=1&uc_param_str=dnntnwvepffrgibijbprsvdsdichei

【嵌牛導(dǎo)讀】:相信大家都聽過爬蟲,但不甚了解,本文將為你介紹。

【嵌牛鼻子】:爬蟲程序、網(wǎng)絡(luò)爬蟲、聚焦爬蟲、算法。

【嵌牛提問】:什么是搜索引擎爬蟲程序?爬蟲程序的種類以及分辨?其算法是什么?面臨著什么問題?

【嵌牛正文】:

一、什么是搜索引擎爬蟲程序

? ? ? 網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動的抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻,自動索引,模擬程序或者蠕蟲。

? ? ? 這些處理被稱為網(wǎng)絡(luò)抓取或者蜘蛛爬行。很多站點,尤其是搜索引擎,都使用爬蟲提供最新的數(shù)據(jù),它主要用于提供它訪問過頁面的一個副本,然后,搜索引擎就可以對得到的頁面進(jìn)行索引,以提供快速的訪問。蜘蛛也可以在web上用來自動執(zhí)行一些任務(wù),例如檢查鏈接,確認(rèn)html代碼;也可以用來抓取網(wǎng)頁上某種特定類型信息,例如抓取電子郵件地址(通常用于垃圾郵件)。

? ? ? 一個網(wǎng)絡(luò)蜘蛛就是一種機(jī)器人,或者軟件代理。大體上,它從一組要訪問的URL鏈接開始,可以稱這些URL為種子。爬蟲訪問這些鏈接,它辨認(rèn)出這些頁面的所有超鏈接,然后添加到這個URL列表,可以稱作檢索前沿。這些URL按照一定的策略反復(fù)訪問。

? ? ? 二、爬蟲程序的種類以及分辨

? ? ? 搜索引擎派出他們的爬蟲程序去訪問、索引網(wǎng)站內(nèi)容,但是由于搜索引擎派爬蟲程序來訪會在一定程度上影響網(wǎng)站性能。在你的服務(wù)器日志文件中,可見每次訪問的路徑和相應(yīng)的 IP 地址,如果是爬蟲程序來訪, 則user-agent 會顯示 Googlebot 或MSNBot 等搜索引擎爬蟲程序名稱,每個搜索引擎都有自己的user-agent,以下分別列出國內(nèi)主要的爬蟲程序。

特征  

? ? ? 基于目標(biāo)網(wǎng)頁特征的爬蟲所抓取、存儲并索引的對象一般為網(wǎng)站或網(wǎng)頁。根據(jù)種子樣本獲取方式可分為:

? ? ? (1) 預(yù)先給定的初始抓取種子樣本;

? ? ? (2) 預(yù)先給定的網(wǎng)頁分類目錄和與分類目錄對應(yīng)的種子樣本,如Yahoo!分類結(jié)構(gòu)等;

? ? ? (3) 通過用戶行為確定的抓取目標(biāo)樣例,分為:

? ? ? a) 用戶瀏覽過程中顯示標(biāo)注的抓取樣本;

? ? ? b) 通過用戶日志挖掘得到訪問模式及相關(guān)樣本。

? ? ? 其中,網(wǎng)頁特征可以是網(wǎng)頁的內(nèi)容特征,也可以是網(wǎng)頁的鏈接結(jié)構(gòu)特征,等等。

? ? ? 現(xiàn)有的聚焦爬蟲對抓取目標(biāo)的描述或定義可以分為基于目標(biāo)網(wǎng)頁特征,基于目標(biāo)數(shù)據(jù)模式和基于領(lǐng)域概念三種。

? ? ? 基于目標(biāo)網(wǎng)頁特征的爬蟲所抓取、存儲并索引的對象一般為網(wǎng)站或網(wǎng)頁。具體的方法根據(jù)種子樣本的獲取方式可以分為:

? ? ? (1)預(yù)先給定的初始抓取種子樣本;

? ? ? (2)預(yù)先給定的網(wǎng)頁分類目錄和與分類目錄對應(yīng)的種子樣本,如Yahoo!分類結(jié)構(gòu)等;

? ? ? (3)通過用戶行為確定的抓取目標(biāo)樣例。其中,網(wǎng)頁特征可以是網(wǎng)頁的內(nèi)容特征,也可以是網(wǎng)頁的鏈接結(jié)構(gòu)特征,等等。

? ? ? 基于目標(biāo)數(shù)據(jù)模式

? ? ? 基于目標(biāo)數(shù)據(jù)模式的爬蟲針對的是網(wǎng)頁上的數(shù)據(jù),所抓取的數(shù)據(jù)一般要符合一定的模式,或者可以轉(zhuǎn)化或映射為目標(biāo)數(shù)據(jù)模式。

? ? ? 基于領(lǐng)域

? ? ? 另一種描述方式是建立目標(biāo)領(lǐng)域的本體或詞典,用于從語義角度分析不同特征在某一主題中的重要程度。

? ? ? 策略

? ? ? 網(wǎng)頁的抓取策略可以分為深度優(yōu)先、廣度優(yōu)先和最佳優(yōu)先三種。深度優(yōu)先在很多情況下會導(dǎo)致爬蟲的陷入(trapped)問題,目前常見的是廣度優(yōu)先和最佳優(yōu)先方法。

? ? ? 廣度優(yōu)先搜索策略

? ? ? 廣度優(yōu)先搜索策略是指在抓取過程中,在完成當(dāng)前層次的搜索后,才進(jìn)行下一層次的搜索。該算法的設(shè)計和實現(xiàn)相對簡單。在目前為覆蓋盡可能多的網(wǎng)頁,一般使用廣度優(yōu)先搜索方法。也有很多研究將廣度優(yōu)先搜索策略應(yīng)用于聚焦爬蟲中。其基本思想是認(rèn)為與初始URL在一定鏈接距離內(nèi)的網(wǎng)頁具有主題相關(guān)性的概率很大。另外一種方法是將廣度優(yōu)先搜索與網(wǎng)頁過濾技術(shù)結(jié)合使用,先用廣度優(yōu)先策略抓取網(wǎng)頁,再將其中無關(guān)的網(wǎng)頁過濾掉。這些方法的缺點在于,隨著抓取網(wǎng)頁的增多,大量的無關(guān)網(wǎng)頁將被下載并過濾,算法的效率將變低。

? ? ? 最佳優(yōu)先搜索策略

? ? ? 最佳優(yōu)先搜索策略按照一定的網(wǎng)頁分析算法,預(yù)測候選URL與目標(biāo)網(wǎng)頁的相似度,或與主題的相關(guān)性,并選取評價最好的一個或幾個URL進(jìn)行抓取。它只訪問經(jīng)過網(wǎng)頁分析算法預(yù)測為“有用”的網(wǎng)頁。存在的一個問題是,在爬蟲抓取路徑上的很多相關(guān)網(wǎng)頁可能被忽略,因為最佳優(yōu)先策略是一種局部最優(yōu)搜索算法。因此需要將最佳優(yōu)先結(jié)合具體的應(yīng)用進(jìn)行改進(jìn),以跳出局部最優(yōu)點。將在第4節(jié)中結(jié)合網(wǎng)頁分析算法作具體的討論。研究表明,這樣的閉環(huán)調(diào)整可以將無關(guān)網(wǎng)頁數(shù)量降低30%~90%。

? ? ? 算法

? ? ? 網(wǎng)頁分析算法可以歸納為基于網(wǎng)絡(luò)拓?fù)?、基于網(wǎng)頁內(nèi)容和基于用戶訪問行為三種類型。

基于網(wǎng)絡(luò)拓?fù)涞姆治鏊惴?br>

? ? ? ? ? ? 基于網(wǎng)頁之間的鏈接,通過已知的網(wǎng)頁或數(shù)據(jù),來對與其有直接或間接鏈接關(guān)系的對象(可以是網(wǎng)頁或網(wǎng)站等)作出評價的算法。又分為網(wǎng)頁粒度、網(wǎng)站粒度和網(wǎng)頁塊粒度這三種。

? ? ? 網(wǎng)頁(Webpage)粒度的分析算法

? ? ? PageRank和HITS算法是最常見的鏈接分析算法,兩者都是通過對網(wǎng)頁間鏈接度的遞歸和規(guī)范化計算,得到每個網(wǎng)頁的重要度評價。PageRank算法雖然考慮了用戶訪問行為的隨機(jī)性和Sink網(wǎng)頁的存在,但忽略了絕大多數(shù)用戶訪問時帶有目的性,即網(wǎng)頁和鏈接與查詢主題的相關(guān)性。針對這個問題,HITS算法提出了兩個關(guān)鍵的概念:權(quán)威型網(wǎng)頁(authority)和中心型網(wǎng)頁(hub)。

? ? ? 基于鏈接的抓取的問題是相關(guān)頁面主題團(tuán)之間的隧道現(xiàn)象,即很多在抓取路徑上偏離主題的網(wǎng)頁也指向目標(biāo)網(wǎng)頁,局部評價策略中斷了在當(dāng)前路徑上的抓取行為。提出了一種基于反向鏈接(BackLink)的分層式上下文模型(ContextModel),用于描述指向目標(biāo)網(wǎng)頁一定物理跳數(shù)半徑內(nèi)的網(wǎng)頁拓?fù)鋱D的中心Layer0為目標(biāo)網(wǎng)頁,將網(wǎng)頁依據(jù)指向目標(biāo)網(wǎng)頁的物理跳數(shù)進(jìn)行層次劃分,從外層網(wǎng)頁指向內(nèi)層網(wǎng)頁的鏈接稱為反向鏈接。

? ? ? 網(wǎng)站粒度的分析算法

? ? ? 網(wǎng)站粒度的資源發(fā)現(xiàn)和管理策略也比網(wǎng)頁粒度的更簡單有效。網(wǎng)站粒度的爬蟲抓取的關(guān)鍵之處在于站點的劃分和站點等級(SiteRank)的計算。SiteRank的計算方法與PageRank類似,但是需要對網(wǎng)站之間的鏈接作一定程度抽象,并在一定的模型下計算鏈接的權(quán)重。

? ? ? 網(wǎng)站劃分情況分為按域名劃分和按IP地址劃分兩種。文獻(xiàn)[18]討論了在分布式情況下,通過對同一個域名下不同主機(jī)、服務(wù)器的IP地址進(jìn)行站點劃分,構(gòu)造站點圖,利用類似PageRank的方法評價SiteRank。同時,根據(jù)不同文件在各個站點上的分布情況,構(gòu)造文檔圖,結(jié)合SiteRank分布式計算得到DocRank。文獻(xiàn)[18]證明,利用分布式的SiteRank計算,不僅大大降低了單機(jī)站點的算法代價,而且克服了單獨站點對整個網(wǎng)絡(luò)覆蓋率有限的缺點。附帶的一個優(yōu)點是,常見PageRank

? ? ? 造假難以對SiteRank進(jìn)行欺騙。

? ? ? 網(wǎng)頁塊粒度的分析算法

? ? ? 在一個頁面中,往往含有多個指向其他頁面的鏈接,這些鏈接中只有一部分是指向主題相關(guān)網(wǎng)頁的,或根據(jù)網(wǎng)頁的鏈接錨文本表明其具有較高重要性。但是,在PageRank和HITS算法中,沒有對這些鏈接作區(qū)分,因此常常給網(wǎng)頁分析帶來廣告等噪聲鏈接的干擾。在網(wǎng)頁塊級別(Block?level)進(jìn)行鏈接分析的算法的基本思想是通過VIPS網(wǎng)頁分割算法將網(wǎng)頁分為不同的網(wǎng)頁塊(page

? ? ? block),然后對這些網(wǎng)頁塊建立page?to?block和block?to?page的鏈接矩陣,?分別記為Z和X。于是,在pageto?page圖上的網(wǎng)頁塊級別的PageRank為?W?p=X×Z;?在block?to?block圖上的BlockRank為W?b=Z×X。已經(jīng)有人實現(xiàn)了塊級別的PageRank和HITS算法,并通過實驗證明,效率和準(zhǔn)確率都比傳統(tǒng)的對應(yīng)算法要好。

? ? ? 基于網(wǎng)頁內(nèi)容的網(wǎng)頁分析算法

? ? ? 基于網(wǎng)頁內(nèi)容的分析算法指的是利用網(wǎng)頁內(nèi)容(文本、數(shù)據(jù)等資源)特征進(jìn)行的網(wǎng)頁評價。網(wǎng)頁的內(nèi)容從原來的以超文本為主,發(fā)展到后來動態(tài)頁面(或稱為Hidden

? ? ? Web)數(shù)據(jù)為主,后者的數(shù)據(jù)量約為直接可見頁面數(shù)據(jù)(PIW,Publicly Indexable Web)的400~500倍。另一方面,多媒體數(shù)據(jù)、Web

? ? ? Service等各種網(wǎng)絡(luò)資源形式也日益豐富。因此,基于網(wǎng)頁內(nèi)容的分析算法也從原來的較為單純的文本檢索方法,發(fā)展為涵蓋網(wǎng)頁數(shù)據(jù)抽取、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、語義理解等多種方法的綜合應(yīng)用。本節(jié)根據(jù)網(wǎng)頁數(shù)據(jù)形式的不同,將基于網(wǎng)頁內(nèi)容的分析算法,歸納以下三類:第一種針對以文本和超鏈接為主的無結(jié)構(gòu)或結(jié)構(gòu)很簡單的網(wǎng)頁;第二種針對從結(jié)構(gòu)化的數(shù)據(jù)源(如RDBMS)動態(tài)生成的頁面,其數(shù)據(jù)不能直接批量訪問;第三種針對的數(shù)據(jù)界于第一和第二類數(shù)據(jù)之間,具有較好的結(jié)構(gòu),顯示遵循一定模式或風(fēng)格,且可以直接訪問。

? ? ? 基于文本的網(wǎng)頁分析算法

? ? ? 1)純文本分類與聚類算法

? ? ? 很大程度上借用了文本檢索的技術(shù)。文本分析算法可以快速有效的對網(wǎng)頁進(jìn)行分類和聚類,但是由于忽略了網(wǎng)頁間和網(wǎng)頁內(nèi)部的結(jié)構(gòu)信息,很少單獨使用。

? ? ? 2) 超文本分類和聚類算法

? ? ? 聚焦爬蟲的工作流程

? ? ? 聚焦爬蟲的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊列。然后,它將根據(jù)一定的搜索策略從隊列中選擇下一步要抓取的網(wǎng)頁URL,并重復(fù)上述過程,直到達(dá)到系統(tǒng)的某一條件時停止,如圖1(b)所示。另外,所有被爬蟲抓取的網(wǎng)頁將會被系統(tǒng)存貯,進(jìn)行一定的分析、過濾,并建立索引,以便之后的查詢和檢索;對于聚焦爬蟲來說,這一過程所得到的分析結(jié)果還可能對以后的抓取過程給出反饋和指導(dǎo)。


? ? ? ? ? ? 聚焦爬蟲面臨的問題


? ? ? 相對于通用網(wǎng)絡(luò)爬蟲,聚焦爬蟲還需要解決三個主要問題:

? ? ? (1) 對抓取目標(biāo)的描述或定義;

? ? ? (2) 對網(wǎng)頁或數(shù)據(jù)的分析與過濾;

? ? ? (3) 對URL的搜索策略。

? ? ? 抓取目標(biāo)的描述和定義是決定網(wǎng)頁分析算法與URL搜索策略如何制訂的基礎(chǔ)。而網(wǎng)頁分析算法和候選URL排序算法是決定搜索引擎所提供的服務(wù)形式和爬蟲網(wǎng)頁抓取行為的關(guān)鍵所在。這兩個部分的算法又是緊密相關(guān)的。

? ? ? 現(xiàn)有聚焦爬蟲對抓取目標(biāo)的描述可分為基于目標(biāo)網(wǎng)頁特征、基于目標(biāo)數(shù)據(jù)模式和基于領(lǐng)域概念3種。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容