[摘要]當(dāng)“蜘蛛”程序出現(xiàn)時(shí),現(xiàn)代意義上的搜索引擎才初露端倪。它實(shí)際上是一種電腦“機(jī)器人”(Computer Robot),電腦“機(jī)器人”是指某個(gè)能以人類無(wú)法達(dá)到的速度不間斷地執(zhí)行某項(xiàng)任務(wù)的軟件程序。由于專門用于檢索信息的“機(jī)器人”程序就象蜘蛛一樣在網(wǎng)絡(luò)間爬來(lái)爬去,反反復(fù)復(fù),不知疲倦。所以,搜索引擎的“機(jī)器人”程序就被稱為“蜘蛛”程序。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),拱墅企業(yè)網(wǎng)站建設(shè),拱墅品牌網(wǎng)站建設(shè),網(wǎng)站定制,拱墅網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,拱墅網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
關(guān)鍵詞:網(wǎng)絡(luò)蜘蛛 起源 原理 優(yōu)化
目錄
什么是網(wǎng)絡(luò)蜘蛛
網(wǎng)絡(luò)蜘蛛的起源
網(wǎng)絡(luò)蜘蛛的工作原理
正文開(kāi)始
1、什么是網(wǎng)絡(luò)蜘蛛
----什么是網(wǎng)絡(luò)蜘蛛呢?網(wǎng)絡(luò)蜘蛛即Web Spider,是一個(gè)很形象的名字。把互聯(lián)網(wǎng)比喻成一個(gè)蜘蛛網(wǎng),那么Spider就是在網(wǎng)上爬來(lái)爬去的蜘蛛。網(wǎng)絡(luò)蜘蛛是通過(guò)網(wǎng)頁(yè)的鏈接地址來(lái)尋找網(wǎng)頁(yè),從 網(wǎng)站某一個(gè)頁(yè)面(通常是首頁(yè))開(kāi)始,讀取網(wǎng)頁(yè)的內(nèi)容,找到在網(wǎng)頁(yè)中的其它鏈接地址,然后通過(guò)這些鏈接地址尋找下一個(gè)網(wǎng)頁(yè),這樣一直循環(huán)下去,直到把這個(gè)網(wǎng) 站所有的網(wǎng)頁(yè)都抓取完為止。如果把整個(gè)互聯(lián)網(wǎng)當(dāng)成一個(gè)網(wǎng)站,那么網(wǎng)絡(luò)蜘蛛就可以用這個(gè)原理把互聯(lián)網(wǎng)上所有的網(wǎng)頁(yè)都抓取下來(lái)。
----這樣看來(lái),網(wǎng)絡(luò)蜘蛛就是一個(gè)爬行程序,一個(gè)抓取網(wǎng)頁(yè)的程序。
2、網(wǎng)絡(luò)蜘蛛的起源
----要說(shuō)網(wǎng)絡(luò)蜘蛛的起源,我們還得從搜索引擎說(shuō)起,什么是搜索引擎呢?搜索引擎的起源是什么,這和網(wǎng)絡(luò)蜘蛛的起源密切相關(guān)。
----搜索引擎指自動(dòng)從英特網(wǎng)搜集信息,經(jīng)過(guò)一定整理以后,提供給用戶進(jìn)行查詢的系統(tǒng)。英特網(wǎng)上的信息浩瀚萬(wàn)千,而且毫無(wú)秩序,所有的信息象汪洋上的一個(gè)個(gè)小島,網(wǎng)頁(yè)鏈接是這些小島之間縱橫交錯(cuò)的橋梁,而搜索引擎,則為你繪制一幅一目了然的信息地圖,供你隨時(shí)查閱。
----搜索引擎從1990年原型初顯,到現(xiàn)在成為人們生活中必不可少的一部分,它經(jīng)歷了太多技術(shù)和觀念的變革。
----十四年前1994年的一月份,第一個(gè)既可搜索又可瀏覽的分類目錄EINetGalaxy上線了。在它之后才出現(xiàn)了雅虎,直至我們現(xiàn)在熟知的Google、百度。但是他們都不是第一個(gè)吃搜索引擎這個(gè)螃蟹的第一人。從搜索FTP上的文件開(kāi)始,搜索引擎的原型就出現(xiàn)了,那時(shí)還未有萬(wàn)維網(wǎng),當(dāng)時(shí)人們先用手工后用蜘蛛程序搜索網(wǎng)頁(yè),但隨著互聯(lián)網(wǎng)的不斷壯大,怎樣能夠搜集到的網(wǎng)頁(yè)數(shù)量更多、時(shí)間更短成為了當(dāng)時(shí)的難點(diǎn)和重點(diǎn),成為人們研究的重點(diǎn)。
----搜索引擎原型初顯
----如果要追溯的話,搜索引擎的歷史比WorldWideWeb 還要長(zhǎng)。早在Web出現(xiàn)之前,互聯(lián)網(wǎng)上就已經(jīng)存在許多旨在讓人們共享的信息資源了。這些資源當(dāng)時(shí)主要存在于各種允許匿名訪問(wèn)的FTP 站點(diǎn)。為了便于人們?cè)诜稚⒌腇TP資源中找到所需的東西,1990年,加拿大麥吉爾大學(xué)(McGillUniversity)的幾個(gè)大學(xué)生開(kāi)發(fā)了一個(gè)軟件Archie。它是一個(gè)可搜索的FTP文件名列表,用戶必須輸入精確的文件名搜索,然后Archie會(huì)告訴用戶哪一個(gè)FTP地址可以下載這個(gè)文件。Archie實(shí)際上是一個(gè)大型的數(shù)據(jù)庫(kù),再加上與這個(gè)大型數(shù)據(jù)庫(kù)相關(guān)聯(lián)的一套檢索方法。Archie雖然還不是搜索引擎,但是從它的工作原理上看,它是所有搜索引擎的祖先。
----當(dāng)萬(wàn)維網(wǎng)(WorldWideWeb)出現(xiàn)后,人們可以通過(guò) html傳播網(wǎng)頁(yè)信息,網(wǎng)絡(luò)上的信息開(kāi)始成倍增長(zhǎng)。人們紛紛使用各種方法將網(wǎng)絡(luò)上的信息搜集來(lái),進(jìn)行分類、整理,以方便查找?,F(xiàn)在人們很熟悉的網(wǎng)站雅虎(Yahoo)就是在這個(gè)環(huán)境下誕生的。還在Stanford大學(xué)讀書的美籍華人楊致遠(yuǎn)和他的同學(xué)迷上了互聯(lián)網(wǎng)。他們將互聯(lián)網(wǎng)上有趣的網(wǎng)頁(yè)搜集過(guò)來(lái),與同學(xué)一起分享。后來(lái),1994年4月,他們倆共同辦了雅虎。隨著訪問(wèn)量和收錄鏈接數(shù)的增長(zhǎng),雅虎目錄開(kāi)始支持簡(jiǎn)單的數(shù)據(jù)庫(kù)搜索。但是因?yàn)檠呕⒌臄?shù)據(jù)是手工輸入的,所以不能真正被歸為搜索引擎,事實(shí)上只是一個(gè)可搜索的目錄。
----當(dāng)“蜘蛛”程序出現(xiàn)時(shí),現(xiàn)代意義上的搜索引擎才初露端倪。它實(shí)際上是一種電腦“機(jī)器人”(Computer Robot),電腦“機(jī)器人”是指某個(gè)能以人類無(wú)法達(dá)到的速度不間斷地執(zhí)行某項(xiàng)任務(wù)的軟件程序。由于專門用于檢索信息的“機(jī)器人”程序就象蜘蛛一樣在網(wǎng)絡(luò)間爬來(lái)爬去,反反復(fù)復(fù),不知疲倦。所以,搜索引擎的“機(jī)器人”程序就被稱為“蜘蛛”程序。
----這種程序?qū)嶋H是利用html文檔之間的鏈接關(guān)系,在Web上一個(gè)網(wǎng)頁(yè)一個(gè)網(wǎng)頁(yè)的爬取(crawl),將這些網(wǎng)頁(yè)抓到系統(tǒng)來(lái)進(jìn)行分析,并放入數(shù)據(jù)庫(kù)中。第一個(gè)開(kāi)發(fā)出“蜘蛛”程序的是Matthew Gray,他于1993年開(kāi)發(fā)了World Wide Web Wanderer,它最初建立時(shí)是為了統(tǒng)計(jì)互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,到后來(lái)發(fā)展到能夠捕獲網(wǎng)址?,F(xiàn)代搜索引擎的思路就來(lái)源于Wanderer,后來(lái)很多人在此基礎(chǔ)上對(duì)蜘蛛程序進(jìn)行了改進(jìn)。
----1994年7月20日發(fā)布的Lycos網(wǎng)站第一個(gè)將 “蜘蛛”程序接入到其索引程序中。引入“蜘蛛”后給其帶來(lái)的最大優(yōu)勢(shì)就在于其遠(yuǎn)勝于其它搜索引擎的數(shù)據(jù)量。自此之后幾乎所有占據(jù)主導(dǎo)地位的搜索引擎中,都靠“蜘蛛”來(lái)搜集網(wǎng)頁(yè)信息。Infoseek是另一個(gè)重要的搜索引擎,于1994年年底才與公眾見(jiàn)面。起初,Infoseek只是一個(gè)不起眼的搜索引擎,它沿襲Yahoo!和Lycos的概念,并沒(méi)有什么獨(dú)特的革新。但是它友善的用戶界面、大量附加服務(wù)使它在用戶中贏得了口碑。1995年12月,它與Netscape的戰(zhàn)略性協(xié)議,使它成為一個(gè)強(qiáng)勢(shì)搜索引擎:當(dāng)用戶點(diǎn)擊Netscape瀏覽器上的搜索按鈕時(shí),彈出Infoseek的搜索服務(wù),而此前由Yahoo!提供該服務(wù)。 1995年12月15日,Alta Vista正式上線。它是第一個(gè)支持高級(jí)搜索語(yǔ)法的搜索引擎,成功地整合了此前人類所有的信息檢索技術(shù),解決了包括字根處理、關(guān)鍵詞檢索、布爾邏輯,以及通過(guò)向量空間模型的查詢排名等關(guān)鍵問(wèn)題。正式公開(kāi)之前,Alta Vista就已經(jīng)擁有20萬(wàn)訪問(wèn)用戶,在短短三個(gè)星期之內(nèi),到訪人數(shù)由每天30萬(wàn)次增加到200萬(wàn)次。它的成功在于滿足了用戶三個(gè)方面的需求:網(wǎng)上索引范圍超過(guò)了此前任何一家搜索引擎;短短幾秒鐘內(nèi)便可從龐大的數(shù)據(jù)庫(kù)中為用戶返回搜索結(jié)果;Alta Vista小組從一開(kāi)始就采用了一種模塊設(shè)計(jì)技術(shù),能夠跟蹤網(wǎng)站的流行趨勢(shì),同時(shí)不斷擴(kuò)大處理能力。在當(dāng)時(shí)許多搜索引擎之中,Alta Vista脫穎而出,成為網(wǎng)絡(luò)搜索的代名詞。Google就是站在這樣的巨人的肩膀上顛覆并創(chuàng)造著?!吧暇W(wǎng)即搜索” 改變了人們上網(wǎng)方式的,就是現(xiàn)在鼎鼎大名的Google。Google并不是搜索引擎的發(fā)明者,甚至有點(diǎn)落后,但是它卻讓人們愛(ài)上了搜索。
----1998年9月,在佩奇和布林創(chuàng)建Google之時(shí),業(yè)界對(duì)互聯(lián)網(wǎng)搜索功能的理解是:某個(gè)關(guān)鍵詞在一個(gè)文檔中出現(xiàn)的頻率越高,該文檔在搜索結(jié)果中的排列位置就要越顯著。這就引出了這樣一個(gè)問(wèn)題,如果一個(gè)頁(yè)面充斥著某一個(gè)關(guān)鍵字的話,那么它將排在很顯著的位置,但這樣一個(gè)頁(yè)面對(duì)于用戶來(lái)說(shuō),卻沒(méi)有任何意義。佩奇和布林發(fā)明了“網(wǎng)頁(yè)級(jí)別”(PageRank)技術(shù),來(lái)排列搜索結(jié)果。即考察該頁(yè)面在網(wǎng)上被鏈接的頻率和重要性來(lái)排列,互聯(lián)網(wǎng)上指向這一頁(yè)面的重要網(wǎng)站越多,該頁(yè)面的位次也就越高。當(dāng)從網(wǎng)頁(yè)A鏈接到網(wǎng)頁(yè)B時(shí),Google 就認(rèn)為“網(wǎng)頁(yè)A投了網(wǎng)頁(yè)B一票”。Google根據(jù)網(wǎng)頁(yè)的得票數(shù)評(píng)定其重要性。然而,除了考慮網(wǎng)頁(yè)得票數(shù)的純數(shù)量之外,Google還要分析投票的網(wǎng)頁(yè),“重要”的網(wǎng)頁(yè)所投出的票就會(huì)有更高的權(quán)重,并且有助于提高其他網(wǎng)頁(yè)的“重要性”。 Google以其復(fù)雜而全自動(dòng)的搜索方法排除了任何人為因素對(duì)搜索結(jié)果的影響。沒(méi)人能花錢買到更高的網(wǎng)頁(yè)級(jí)別,從而保證了網(wǎng)頁(yè)排名的客觀公正。除此之外,動(dòng)態(tài)摘要、網(wǎng)頁(yè)快照、多文檔格式支持、地圖股票詞典尋人等集成搜索也都深得網(wǎng)民的喜愛(ài)。其他眾多搜索引擎也都緊跟Google,推出這些服務(wù)。Fast(Alltheweb)公司發(fā)布的搜索引擎AllTheWeb,總部位于挪威,其在海外的風(fēng)頭直逼Google。Alltheweb的網(wǎng)頁(yè)搜索支持Flash和pdf搜索,支持多語(yǔ)言搜索,還提供新聞搜索、圖像搜索、視頻、MP3、和FTP搜索,擁有極其強(qiáng)大的高級(jí)搜索功能。而中國(guó)的百度更是憑借“更懂中文”而吸引著中國(guó)的網(wǎng)絡(luò)受眾,它擁有超過(guò)10億的中文網(wǎng)頁(yè)數(shù)據(jù)庫(kù),并且,這些網(wǎng)頁(yè)的數(shù)量每天正以千萬(wàn)級(jí)的速度在增長(zhǎng)。
----搜索引擎越來(lái)越成為人們生活中重要的一部分,找資料、查地圖、聽(tīng)音樂(lè),只有想不到的,沒(méi)有搜索不到的。
----搜索引擎的三個(gè)基本原理
----1.利用蜘蛛系統(tǒng)程序,自動(dòng)訪問(wèn)互聯(lián)網(wǎng),并沿著任何網(wǎng)頁(yè)中的所有URL爬到其它網(wǎng)頁(yè),重復(fù)這過(guò)程,并把爬過(guò)的所有網(wǎng)頁(yè)收集回來(lái)。
----2.由分析索引系統(tǒng)程序?qū)κ占貋?lái)的網(wǎng)頁(yè)進(jìn)行分析,提取相關(guān)網(wǎng)頁(yè)信息,根據(jù)一定的相關(guān)度算法進(jìn)行大量復(fù)雜計(jì)算,得到每一個(gè)網(wǎng)頁(yè)針對(duì)頁(yè)面內(nèi)容中及超鏈中每一個(gè)關(guān)鍵詞的相關(guān)度(或重要性),然后用這些相關(guān)信息建立網(wǎng)頁(yè)索引數(shù)據(jù)庫(kù)。
----3.當(dāng)用戶輸入關(guān)鍵詞搜索后,由搜索系統(tǒng)程序從網(wǎng)頁(yè)索引數(shù)據(jù)庫(kù)中找到符合該關(guān)鍵詞的所有相關(guān)網(wǎng)頁(yè)。相關(guān)度數(shù)值排序,相關(guān)度越高,排名越靠前。最后,由頁(yè)面生成系統(tǒng)將搜索結(jié)果的鏈接地址和頁(yè)面內(nèi)容摘要等內(nèi)容組織起來(lái)返回給用戶。
----說(shuō)到這里,你可能對(duì)搜索引擎和網(wǎng)絡(luò)蜘蛛有了一個(gè)初步的了解了吧!
3、網(wǎng)絡(luò)蜘蛛的工作原理
----對(duì)于搜索引擎來(lái)說(shuō),要抓取互聯(lián)網(wǎng)上所有的網(wǎng)頁(yè)幾乎是不可能的,從目前公布的數(shù)據(jù)來(lái)看,容量最大的搜索引擎也不過(guò)是抓取了整個(gè)網(wǎng)頁(yè)數(shù)量的百分之四十左右。這 其中的原因一方面是抓取技術(shù)的瓶頸,無(wú)法遍歷所有的網(wǎng)頁(yè),有許多網(wǎng)頁(yè)無(wú)法從其它網(wǎng)頁(yè)的鏈接中找到;另一個(gè)原因是存儲(chǔ)技術(shù)和處理技術(shù)的問(wèn)題,如果按照每個(gè)頁(yè) 面的平均大小為20K計(jì)算(包含圖片),100億網(wǎng)頁(yè)的容量是100×2000G字節(jié),即使能夠存儲(chǔ),下載也存在問(wèn)題(按照一臺(tái)機(jī)器每秒下載20K計(jì)算, 需要340臺(tái)機(jī)器不停的下載一年時(shí)間,才能把所有網(wǎng)頁(yè)下載完畢)。同時(shí),由于數(shù)據(jù)量太大,在提供搜索時(shí)也會(huì)有效率方面的影響。因此,許多搜索引擎的網(wǎng)絡(luò)蜘 蛛只是抓取那些重要的網(wǎng)頁(yè),而在抓取的時(shí)候評(píng)價(jià)重要性主要的依據(jù)是某個(gè)網(wǎng)頁(yè)的鏈接深度。
----在抓取網(wǎng)頁(yè)的時(shí)候,網(wǎng)絡(luò)蜘蛛一般有兩種策略:廣度優(yōu)先和深度優(yōu)先(如下圖所示)。
----廣度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會(huì)先抓取起始網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè),然后再選擇其中 的一個(gè)鏈接網(wǎng)頁(yè),繼續(xù)抓取在此網(wǎng)頁(yè)中鏈接的所有網(wǎng)頁(yè)。這是最常用的方式,因?yàn)檫@個(gè)方法可以讓網(wǎng)絡(luò)蜘蛛并行處理,提高其抓取速度。深度優(yōu)先是指網(wǎng)絡(luò)蜘蛛會(huì)從 起始頁(yè)開(kāi)始,一個(gè)鏈接一個(gè)鏈接跟蹤下去,處理完這條線路之后再轉(zhuǎn)入下一個(gè)起始頁(yè),繼續(xù)跟蹤鏈接。這個(gè)方法有個(gè)優(yōu)點(diǎn)是網(wǎng)絡(luò)蜘蛛在設(shè)計(jì)的時(shí)候比較容易。兩種策 略的區(qū)別,下圖的說(shuō)明會(huì)更加明確。
----由于不可能抓取所有的網(wǎng)頁(yè),有些網(wǎng)絡(luò)蜘蛛對(duì)一些不太重要的網(wǎng)站,設(shè)置了訪問(wèn)的層數(shù)。例如,在上圖中,A為起始網(wǎng)頁(yè),屬于0層,B、C、D、E、F屬于第1 層,G、H屬于第2層,I屬于第3層。如果網(wǎng)絡(luò)蜘蛛設(shè)置的訪問(wèn)層數(shù)為2的話,網(wǎng)頁(yè)I是不會(huì)被訪問(wèn)到的。這也讓有些網(wǎng)站上一部分網(wǎng)頁(yè)能夠在搜索引擎上搜索 到,另外一部分不能被搜索到。對(duì)于網(wǎng)站設(shè)計(jì)者來(lái)說(shuō),扁平化的網(wǎng)站結(jié)構(gòu)設(shè)計(jì)有助于搜索引擎抓取其更多的網(wǎng)頁(yè)。
----網(wǎng)絡(luò)蜘蛛在訪問(wèn)網(wǎng)站網(wǎng)頁(yè)的時(shí)候,經(jīng)常會(huì)遇到加密數(shù)據(jù)和網(wǎng)頁(yè)權(quán)限的問(wèn)題,有些網(wǎng)頁(yè)是需要會(huì)員權(quán)限才能訪問(wèn)。當(dāng)然,網(wǎng)站的所有者可以通過(guò)協(xié)議讓網(wǎng)絡(luò)蜘蛛不去抓 取(下小節(jié)會(huì)介紹),但對(duì)于一些出售報(bào)告的網(wǎng)站,他們希望搜索引擎能搜索到他們的報(bào)告,但又不能完全免費(fèi)的讓搜索者查看,這樣就需要給網(wǎng)絡(luò)蜘蛛提供相應(yīng)的 用戶名和密碼。網(wǎng)絡(luò)蜘蛛可以通過(guò)所給的權(quán)限對(duì)這些網(wǎng)頁(yè)進(jìn)行網(wǎng)頁(yè)抓取,從而提供搜索。而當(dāng)搜索者點(diǎn)擊查看該網(wǎng)頁(yè)的時(shí)候,同樣需要搜索者提供相應(yīng)的權(quán)限驗(yàn)證。
----每個(gè)網(wǎng)絡(luò)蜘蛛都有自己的名字,在抓取網(wǎng)頁(yè)的時(shí)候,都會(huì)向網(wǎng)站標(biāo)明自己的身份。網(wǎng)絡(luò)蜘蛛在抓取網(wǎng)頁(yè)的時(shí)候會(huì)發(fā)送一個(gè)請(qǐng)求,這個(gè)請(qǐng)求中就有一個(gè)字段為User -agent,用于標(biāo)識(shí)此網(wǎng)絡(luò)蜘蛛的身份。例如Google網(wǎng)絡(luò)蜘蛛的標(biāo)識(shí)為GoogleBot,Baidu網(wǎng)絡(luò)蜘蛛的標(biāo)識(shí)為BaiDuSpider, Yahoo網(wǎng)絡(luò)蜘蛛的標(biāo)識(shí)為Inktomi Slurp。如果在網(wǎng)站上有訪問(wèn)日志記錄,網(wǎng)站管理員就能知道,哪些搜索引擎的網(wǎng)絡(luò)蜘蛛過(guò)來(lái)過(guò),什么時(shí)候過(guò)來(lái)的,以及讀了多少數(shù)據(jù)等等。如果網(wǎng)站管理員發(fā) 現(xiàn)某個(gè)蜘蛛有問(wèn)題,就通過(guò)其標(biāo)識(shí)來(lái)和其所有者聯(lián)系。
----網(wǎng)絡(luò)蜘蛛進(jìn)入一個(gè)網(wǎng)站,一般會(huì)訪問(wèn)一個(gè)特殊的文本文件Robots.txt,這個(gè)文件一般放在網(wǎng)站服務(wù)器的根目錄下,如:[url][/url]。 網(wǎng)站管理員可以通過(guò)robots.txt來(lái)定義哪些目錄網(wǎng)絡(luò)蜘蛛不能訪問(wèn),或者哪些目錄對(duì)于某些特定的網(wǎng)絡(luò)蜘蛛不能訪問(wèn)。例如有些網(wǎng)站的可執(zhí)行文件目錄和 臨時(shí)文件目錄不希望被搜索引擎搜索到,那么網(wǎng)站管理員就可以把這些目錄定義為拒絕訪問(wèn)目錄。Robots.txt語(yǔ)法很簡(jiǎn)單,例如如果對(duì)目錄沒(méi)有任何限 制,可以用以下兩行來(lái)描述: User-agent: *
Disallow:
----當(dāng)然,Robots.txt只是一個(gè)協(xié)議,如果網(wǎng)絡(luò)蜘蛛的設(shè)計(jì)者不遵循這個(gè)協(xié)議,網(wǎng)站管理員也無(wú)法阻止網(wǎng)絡(luò)蜘蛛對(duì)于某些頁(yè)面的訪問(wèn),但一般的網(wǎng)絡(luò)蜘蛛都會(huì)遵循這些協(xié)議,而且網(wǎng)站管理員還可以通過(guò)其它方式來(lái)拒絕網(wǎng)絡(luò)蜘蛛對(duì)某些網(wǎng)頁(yè)的抓取。
---- 網(wǎng)絡(luò)蜘蛛在下載網(wǎng)頁(yè)的時(shí)候,會(huì)去識(shí)別網(wǎng)頁(yè)的HTML代碼,在其代碼的部分,會(huì)有META標(biāo)識(shí)。通過(guò)這些標(biāo)識(shí),可以告訴網(wǎng)絡(luò)蜘蛛本網(wǎng)頁(yè)是否需要被抓取,還可 以告訴網(wǎng)絡(luò)蜘蛛本網(wǎng)頁(yè)中的鏈接是否需要被繼續(xù)跟蹤。例如:表示本網(wǎng)頁(yè)不需要被抓取,但是網(wǎng)頁(yè)內(nèi)的鏈接需要被跟蹤。
---- 搜索引擎建立網(wǎng)頁(yè)索引,處理的對(duì)象是文本文件。對(duì)于網(wǎng)絡(luò)蜘蛛來(lái)說(shuō),抓取下來(lái)網(wǎng)頁(yè)包括各種格式,包括html、圖片、doc、pdf、多媒體、動(dòng)態(tài)網(wǎng)頁(yè)及其 它格式等。這些文件抓取下來(lái)后,需要把這些文件中的文本信息提取出來(lái)。準(zhǔn)確提取這些文檔的信息,一方面對(duì)搜索引擎的搜索準(zhǔn)確性有重要作用,另一方面對(duì)于網(wǎng) 絡(luò)蜘蛛正確跟蹤其它鏈接有一定影響。對(duì)于doc、pdf等文檔,這種由專業(yè)廠商提供的軟件生成的文檔,廠商都會(huì)提供相應(yīng)的文本提取接口。網(wǎng)絡(luò)蜘蛛只需要調(diào)用這些插件的接口,就可以輕松的提取文檔中的文本信息和文件其它相關(guān)的信息。但HTML等文檔不一樣,HTML有一套自己的語(yǔ)法,通過(guò)不同的命令標(biāo)識(shí)符來(lái)表示不同的字體、顏色、位置等版式,如:、、等, 提取文本信息時(shí)需要把這些標(biāo)識(shí)符都過(guò)濾掉。過(guò)濾標(biāo)識(shí)符并非難事,因?yàn)檫@些標(biāo)識(shí)符都有一定的規(guī)則,只要按照不同的標(biāo)識(shí)符取得相應(yīng)的信息即可。但在識(shí)別這些信 息的時(shí)候,需要同步記錄許多版式信息,例如文字的字體大小、是否是標(biāo)題、是否是加粗顯示、是否是頁(yè)面的關(guān)鍵詞等,這些信息有助于計(jì)算單詞在網(wǎng)頁(yè)中的重要程 度。同時(shí),對(duì)于HTML網(wǎng)頁(yè)來(lái)說(shuō),除了標(biāo)題和正文以外,會(huì)有許多廣告鏈接以及公共的頻道鏈接,這些鏈接和文本正文一點(diǎn)關(guān)系也沒(méi)有,在提取網(wǎng)頁(yè)內(nèi)容的時(shí)候, 也需要過(guò)濾這些無(wú)用的鏈接。例如某個(gè)網(wǎng)站有“產(chǎn)品介紹”頻道,因?yàn)閷?dǎo)航條在網(wǎng)站內(nèi)每個(gè)網(wǎng)頁(yè)都有,若不過(guò)濾導(dǎo)航條鏈接,在搜索“產(chǎn)品介紹”的時(shí)候,則網(wǎng)站內(nèi) 每個(gè)網(wǎng)頁(yè)都會(huì)搜索到,無(wú)疑會(huì)帶來(lái)大量垃圾信息。過(guò)濾這些無(wú)效鏈接需要統(tǒng)計(jì)大量的網(wǎng)頁(yè)結(jié)構(gòu)規(guī)律,抽取一些共性,統(tǒng)一過(guò)濾;對(duì)于一些重要而結(jié)果特殊的網(wǎng)站,還 需要個(gè)別處理。這就需要網(wǎng)絡(luò)蜘蛛的設(shè)計(jì)有一定的擴(kuò)展性。
---- 對(duì)于多媒體、圖片等文件,一般是通過(guò)鏈接的錨文本(即,鏈接文本)和相關(guān)的文件注釋來(lái)判斷這些文件的內(nèi)容。例如有一個(gè)鏈接文字為“張曼玉照片”,其鏈接指 向一張bmp格式的圖片,那么網(wǎng)絡(luò)蜘蛛就知道這張圖片的內(nèi)容是“張曼玉的照片”。這樣,在搜索“張曼玉”和“照片”的時(shí)候都能讓搜索引擎找到這張圖片。另 外,許多多媒體文件中有文件屬性,考慮這些屬性也可以更好的了解文件的內(nèi)容。
---- 動(dòng)態(tài)網(wǎng)頁(yè)一直是網(wǎng)絡(luò)蜘蛛面臨的難題。所謂動(dòng)態(tài)網(wǎng)頁(yè),是相對(duì)于靜態(tài)網(wǎng)頁(yè)而言,是由程序自動(dòng)生成的頁(yè)面,這樣的好處是可以快速統(tǒng)一更改網(wǎng)頁(yè)風(fēng)格,也可以減少網(wǎng) 頁(yè)所占服務(wù)器的空間,但同樣給網(wǎng)絡(luò)蜘蛛的抓取帶來(lái)一些麻煩。由于開(kāi)發(fā)語(yǔ)言不斷的增多,動(dòng)態(tài)網(wǎng)頁(yè)的類型也越來(lái)越多,如:asp、jsp、php等。這些類型 的網(wǎng)頁(yè)對(duì)于網(wǎng)絡(luò)蜘蛛來(lái)說(shuō),可能還稍微容易一些。網(wǎng)絡(luò)蜘蛛比較難于處理的是一些腳本語(yǔ)言(如VBScript和JavaScript)生成的網(wǎng)頁(yè),如果要完 善的處理好這些網(wǎng)頁(yè),網(wǎng)絡(luò)蜘蛛需要有自己的腳本解釋程序。對(duì)于許多數(shù)據(jù)是放在數(shù)據(jù)庫(kù)的網(wǎng)站,需要通過(guò)本網(wǎng)站的數(shù)據(jù)庫(kù)搜索才能獲得信息,這些給網(wǎng)絡(luò)蜘蛛的抓 取帶來(lái)很大的困難。對(duì)于這類網(wǎng)站,如果網(wǎng)站設(shè)計(jì)者希望這些數(shù)據(jù)能被搜索引擎搜索,則需要提供一種可以遍歷整個(gè)數(shù)據(jù)庫(kù)內(nèi)容的方法。
對(duì)于網(wǎng)頁(yè)內(nèi)容的提取,一直是網(wǎng)絡(luò)蜘蛛中重要的技術(shù)。整個(gè)系統(tǒng)一般采用插件的形式,通過(guò)一個(gè)插件管理服務(wù)程序,遇到不同格式的網(wǎng)頁(yè)采用不同的插件處理。這種 方式的好處在于擴(kuò)充性好,以后每發(fā)現(xiàn)一種新的類型,就可以把其處理方式做成一個(gè)插件補(bǔ)充到插件管理服務(wù)程序之中。
---- 由于網(wǎng)站的內(nèi)容經(jīng)常在變化,因此網(wǎng)絡(luò)蜘蛛也需不斷的更新其抓取網(wǎng)頁(yè)的內(nèi)容,這就需要網(wǎng)絡(luò)蜘蛛按照一定的周期去掃描網(wǎng)站,查看哪些頁(yè)面是需要更新的頁(yè)面,哪些頁(yè)面是新增頁(yè)面,哪些頁(yè)面是已經(jīng)過(guò)期的死鏈接。
---- 搜索引擎的更新周期對(duì)搜索引擎搜索的查全率有很大影響。如果更新周期太長(zhǎng),則總會(huì)有一部分新生成的網(wǎng)頁(yè)搜索不到;周期過(guò)短,技術(shù)實(shí)現(xiàn)會(huì)有一定難度,而且會(huì) 對(duì)帶寬、服務(wù)器的資源都有浪費(fèi)。搜索引擎的網(wǎng)絡(luò)蜘蛛并不是所有的網(wǎng)站都采用同一個(gè)周期進(jìn)行更新,對(duì)于一些重要的更新量大的網(wǎng)站,更新的周期短,如有些新聞 網(wǎng)站,幾個(gè)小時(shí)就更新一次;相反對(duì)于一些不重要的網(wǎng)站,更新的周期就長(zhǎng),可能一兩個(gè)月才更新一次。
---- 一般來(lái)說(shuō),網(wǎng)絡(luò)蜘蛛在更新網(wǎng)站內(nèi)容的時(shí)候,不用把網(wǎng)站網(wǎng)頁(yè)重新抓取一遍,對(duì)于大部分的網(wǎng)頁(yè),只需要判斷網(wǎng)頁(yè)的屬性(主要是日期),把得到的屬性和上次抓取的屬性相比較,如果一樣則不用更新。
---- 現(xiàn)在大家對(duì)網(wǎng)絡(luò)蜘蛛的工作原理有了初步的了解了吧,了解后就要在以后的網(wǎng)站制作中考慮蜘蛛的爬行規(guī)律,比如制作網(wǎng)站地圖就很重要,好了,如果你有更好的見(jiàn)解,請(qǐng)到這里發(fā)表,火鳥(niǎo)非常愿意與你交流,共同研究網(wǎng)站制作技巧,盡量將自己的網(wǎng)站制作的符合標(biāo)準(zhǔn),符合用戶的習(xí)慣!
ajax有同步和異步之分,你要打開(kāi)網(wǎng)頁(yè)就獲取到信息,可以采用同步過(guò)去,async 設(shè)置為false, 表示同步請(qǐng)求,php 后臺(tái)使用json _encode,前臺(tái)通過(guò)json 接收就可以
普通用戶與搜索引擎蜘蛛爬行的區(qū)別在于發(fā)送的user agent
百度蜘蛛名字包含Baiduspider, 而google的則是Googlebot, 這樣我們可以通過(guò)判斷發(fā)送的user agent來(lái)決定要不要取消普通用戶的訪問(wèn),編寫函數(shù)如下:
function?isAllowAccess($directForbidden?=?false,$url)?{?
$allowed?=?array('/baiduspider/i',?'/googlebot/i');?
$user_agent?=?$_SERVER['HTTP_USER_AGENT'];?
$valid?=?false;?
foreach?($allowed?as?$pattern)?{?
if?(preg_match($pattern,?$user_agent))?{?
$valid?=?true;?
break;?
}?
}?
if?(!$valid??$directForbidden)?{?
header('location:'.$url);
}??
return?$valid;?
}
望采納 Thx