關鍵詞:優化網絡蜘蛛起源原理
目錄
什麽是網絡蜘蛛?
網絡蜘蛛的起源
網絡蜘蛛的工作原理
文本開始
1.什麽是網絡蜘蛛?
-什麽是網絡蜘蛛?網絡蜘蛛是壹個非常生動的名字。把互聯網比作蜘蛛網,那麽Spider就是在互聯網上爬來爬去的蜘蛛。網絡蜘蛛通過鏈接地址尋找網頁,從網站的某壹頁(通常是首頁)開始,讀取網頁的內容,找到網頁中的其他鏈接地址,然後通過這些鏈接地址尋找下壹個網頁,以此類推,直到抓取到該網站的所有網頁。如果把整個互聯網看成壹個網站,那麽網絡蜘蛛就可以利用這個原理抓取互聯網上的所有頁面。
從這個角度來說,網絡蜘蛛是壹個抓取程序,壹個抓取網頁的程序。
2.網絡蜘蛛的起源。
-要說網絡蜘蛛的起源,還得從搜索引擎說起。什麽是搜索引擎?搜索引擎的起源是什麽?這與網絡蜘蛛的起源密切相關。
-搜索引擎(Search engine)是指從互聯網上自動收集信息,進行整理並提供給用戶查詢的系統。網上的信息浩如煙海,雜亂無章。所有的信息就像汪洋中的孤島。網頁鏈接是這些島嶼之間縱橫交錯的橋梁,而搜索引擎則繪制出清晰的信息地圖,供妳隨時查閱。
搜索引擎自1990出現雛形以來,已經成為人們生活中不可或缺的壹部分。它在技術和觀念上經歷了太多的變化。
-14年前,1994年1月,第壹個可搜索和瀏覽的目錄EINetGalaxy推出。雅虎是在它之後才出現的,直到我們現在熟悉的谷歌和百度。但他們並不是第壹批吃搜索引擎這只螃蟹的人。搜索引擎的雛形是從在FTP上搜索文件開始出現的。那時候還沒有萬維網。當時人們是用手搜索網頁,然後用蜘蛛程序。但是,隨著互聯網的不斷壯大,如何收集更多的網頁,縮短時間成為當時的難點和重點,成為人們研究的重點。
——搜索引擎的雛形初現。
-如果要追溯的話,搜索引擎的歷史比萬維網還要長。早在網絡出現之前,互聯網上就有許多信息資源供人們享用。這些資源主要存在於當時允許匿名訪問的各種FTP站點中。為了方便人們在零散的FTP資源中找到自己需要的東西,1990年,加拿大麥吉爾大學的幾個大學生開發了壹個軟件Archie。這是壹個可搜索的FTP文件名列表。用戶必須輸入確切的文件名搜索,然後Archie會告訴用戶哪個FTP地址可以下載這個文件。Archie實際上是壹個大型數據庫,加上壹套與這個大型數據庫相關聯的檢索方法。雖然Archie現在還不是搜索引擎,但從工作原理來看,它是所有搜索引擎的始祖。
-當萬維網(WorldWideWeb)出現時,人們可以通過html傳播網頁信息,網絡上的信息開始成倍增長。人們使用各種方法來收集、分類和整理網絡上的信息,以便於搜索。現在人們熟悉的網站雅虎就是在這種環境下誕生的。仍在斯坦福大學學習的美籍華人楊致遠和他的同學們沈迷於網絡。他們在互聯網上收集有趣的網頁,並與他們的同學分享。後來,1994年4月,他們共同成立了雅虎。隨著訪問量和收錄鏈接的增加,雅虎目錄開始支持簡單的數據庫搜索。但由於雅虎的數據是人工輸入的,所以並不能真正歸類為搜索引擎。事實上,它只是壹個可搜索的目錄。
——當“蜘蛛”程序出現後,現代意義上的搜索引擎開始出現。它其實是壹個電腦機器人,指的是壹個軟件程序,能夠以人類無法達到的速度執行某項任務。因為專門用來檢索信息的“機器人”程序像蜘蛛壹樣在網絡上爬來爬去,反反復復,不知疲倦。因此,搜索引擎的“機器人”程序被稱為“蜘蛛”程序。
這個程序實際上是利用html文檔之間的鏈接關系在Web上壹頁壹頁地爬行,並將這些頁面捕獲到系統中進行分析並放入數據庫中。馬修·格雷是第壹個開發“蜘蛛”程序的人。他在1993開發了萬維網漫遊者。它最初是為了統計互聯網上的服務器數量而建立的,後來發展到捕捉網址。現代搜索引擎的思想來源於《漫遊者》,很多人在此基礎上改進了蜘蛛程序。
-Lycos網站7月20日發布,1994率先將“蜘蛛”程序接入其索引程序。“蜘蛛”的引入帶來的最大好處就是遠超其他搜索引擎的數據量。從那以後,幾乎所有的主流搜索引擎都依靠“蜘蛛”來收集網絡信息。Infoseek是另壹個重要的搜索引擎,它是在1994年底才出現在公眾面前的。起初,Infoseek只是壹個默默無聞的搜索引擎,緊隨雅虎之後。而Lycos,沒有什麽獨特的創新。然而,其友好的用戶界面和大量的附加服務使其在用戶中贏得了聲譽。2月,它與網景公司簽訂的戰略協議使其成為壹個強大的搜索引擎:當用戶點擊網景瀏覽器上的搜索按鈕時,Infoseek的搜索服務就會彈出,而Yahoo!提供這項服務。1995 65438+2月15,Alta Vista正式上線。它是第壹個支持高級搜索語法的搜索引擎,成功整合了之前所有的信息檢索技術,通過向量空間模型解決了包括詞根處理、關鍵詞檢索、布爾邏輯、查詢排序等關鍵問題。在正式公開之前,Alta Vista有20萬訪客,在短短三周內,訪客數量從每天30萬增加到200萬。它的成功在於滿足了用戶三方面的需求:在線索引的範圍超過了以往任何壹個搜索引擎;搜索結果可以在短短幾秒鐘內從龐大的數據庫中返回給用戶;Alta Vista團隊從壹開始就采用了模塊化的設計技術,可以跟蹤網站的流行趨勢,不斷擴展處理能力。在當時眾多搜索引擎中,Alta Vista脫穎而出,成為在線搜索的代名詞。谷歌就是站在這樣的巨人的肩膀上顛覆和創造的。“網上搜索”改變了人們上網的方式,也就是現在著名的谷歌。谷歌不是搜索引擎的發明者,甚至有點落後,但它讓人們愛上了搜索。
-1998 9月,佩奇和布林創立谷歌的時候,業界對互聯網搜索功能的理解是,壹個關鍵詞在文檔中出現的頻率越高,該文檔在搜索結果中的排名位置就越突出。這就導致了壹個問題,如果壹個頁面充滿了某個關鍵詞,它會排在非常突出的位置,但是這樣的頁面對用戶來說是沒有意義的。佩奇和布林發明了“PageRank”的技術來排列搜索結果。也就是說,調查這個頁面在互聯網上被鏈接的頻率和重要性。互聯網上越重要的網站指向這個頁面,這個頁面的排名就越高。從A頁鏈接到B頁時,谷歌認為“A頁投了B頁”。谷歌根據網頁獲得的票數來評估網頁的重要性。但谷歌除了考慮單純的票數,還要對投票的頁面進行分析,讓“重要”頁面投出的票具有更高的權重,有助於提高其他頁面的“重要性”。谷歌憑借其復雜的全自動搜索方法,消除了任何人為因素對搜索結果的影響。沒有人可以花錢買更高等級的網頁,從而保證網頁排名的客觀公正。此外,動態摘要、網頁快照、多文檔格式支持、地圖股票字典搜索等集成搜索也獲得了網民的青睞。許多其他搜索引擎緊隨谷歌之後,推出了這些服務。Fast(Alltheweb)公司發布的搜索引擎AllTheWeb,總部位於挪威,在海外的知名度幾乎與谷歌持平。Alltheweb支持Flash和pdf搜索、多語言搜索、新聞搜索、圖片搜索、視頻搜索、MP3搜索、FTP搜索,具有極其強大的高級搜索功能。中國的百度憑借“更懂中文”吸引中國的網絡受眾,擁有超過6543.8+0億的中文網頁數據庫,而這些網頁的數量每天都在以數千萬的速度遞增。
搜索引擎正日益成為人們生活的重要組成部分。搜資料,查地圖,聽音樂,只能是想不到的,沒有搜不到的。
-搜索引擎的三個基本原則
-1.使用蜘蛛系統程序自動上網,並沿任意網頁中的所有網址爬至其他網頁,重復此過程,收集所有爬取的網頁。
2.通過分析索引系統程序對收集到的網頁進行分析,提取相關的網頁信息,並按照壹定的關聯算法進行大量復雜的計算,得出每個網頁對於網頁內容和超鏈接中的每個關鍵詞的關聯度(或重要度),然後利用這些相關信息建立網頁索引數據庫。
3.當用戶輸入關鍵字進行搜索時,搜索系統程序從網頁索引數據庫中找到所有與該關鍵字匹配的相關網頁。關聯度的數值排名,關聯度越高,排名越高。最後,頁面生成系統組織搜索結果的鏈接地址和頁面內容摘要,並將它們返回給用戶。
-說到這裏,妳可能對搜索引擎和網絡蜘蛛有了初步的了解!
3.網絡蜘蛛的工作原理。
對於搜索引擎來說,幾乎不可能抓取互聯網上的所有網頁。從公布的數據來看,容量最大的搜索引擎只抓取了網頁總數的40%左右。壹方面原因是爬行技術的瓶頸,無法遍歷所有網頁,很多網頁無法從其他網頁的鏈接中找到;另壹個原因是存儲技術和加工技術的問題。如果每頁平均大小為20K(含圖片),1000億頁的容量為100×2000G字節。即使可以存儲,下載還是有問題的(如果壹臺機器每秒下載20K,壹年要340臺機器才能下載完所有頁面)。同時由於數據量大,在提供搜索時也會對效率產生影響。所以很多搜索引擎只抓取那些重要的網頁,抓取時評估重要性的主要依據就是壹個網頁的鏈接深度。
-抓取網頁時,網絡蜘蛛壹般有兩種策略:廣度優先和深度優先(如下圖所示)。
-廣度優先是指網絡蜘蛛會先抓取初始頁面中鏈接的所有頁面,然後選擇其中壹個鏈接的頁面繼續抓取該頁面中鏈接的所有頁面。這是最常用的方式,因為這種方式可以讓網絡蜘蛛並行處理,提高自己的爬行速度。深度優先(Depth-first)是指網絡蜘蛛會從起始頁開始,跟蹤壹個又壹個鏈接,在處理完這壹行後,再到下壹個起始頁繼續跟蹤鏈接。這種方法的壹個優點是,它更容易為網絡蜘蛛設計。這兩種策略之間的區別在下圖中會更加明顯。
-因為不可能抓取所有網頁,所以有些網絡蜘蛛會對壹些不太重要的網站設置訪問層數。比如上圖中,A是初始網頁,屬於0級,B,C,D,E,F屬於1級,G,H屬於2級,I屬於3級。如果網絡蜘蛛設置的訪問層數為2,則網頁I將不被訪問。這也讓壹些網站的部分網頁可以被搜索引擎搜索到,而另壹些則無法搜索到。對於網站設計者來說,扁平化的網站結構設計有助於搜索引擎抓取更多頁面。
-網絡蜘蛛在訪問網頁時經常會遇到數據加密和網頁權限的問題,有些網頁需要會員權限才能訪問。當然,網站的所有者可以通過壹個協議(下壹節會介紹)阻止網絡蜘蛛抓取,但是對於壹些出售報告的網站,他們希望搜索引擎能夠搜索到他們的報告,但是他們不能讓搜索者免費看到,所以他們需要向網絡蜘蛛提供相應的用戶名和密碼。網絡蜘蛛可以通過給定的權限抓取這些頁面,從而提供搜索。當搜索者點擊查看網頁時,搜索者還需要提供相應的權限驗證。
每個網絡蜘蛛都有自己的名字,當他抓取壹個網頁時,他會向網站表明自己的身份。當壹個網絡蜘蛛抓取壹個網頁時,它會發送壹個請求,在這個請求中有壹個名為User -agent的字段,用來標識這個網絡蜘蛛的身份。比如谷歌網絡蜘蛛的logo是GoogleBot,百度網絡蜘蛛是BaiDuSpider,雅虎網絡蜘蛛是Inktomi Slurp。如果網站有訪問日誌記錄,站長就可以知道哪些搜索引擎的網絡蜘蛛來了,什麽時候來的,讀了多少數據。如果站長發現壹只蜘蛛有問題,可以通過它的logo聯系它的主人。
-網絡蜘蛛進入壹個網站時,通常會訪問壹個特殊的文本文件Robots.txt,這個文件通常放在網站服務器的根目錄下,比如[url][/url]。站長可以通過robots.txt定義哪些目錄是網絡蜘蛛無法訪問的,或者哪些目錄是某些網絡蜘蛛無法訪問的,比如有些網站的可執行文件目錄和臨時文件目錄是不希望被搜索引擎搜索到的,那麽網站管理員可以將這些目錄定義為拒絕訪問目錄。Robots.txt的語法非常簡單。例如,如果對目錄沒有限制,可以用下面兩行來描述:User-agent: *
不允許:
當然Robots.txt只是壹個協議。如果網絡蜘蛛的設計者不遵守這個協議,站長是無法阻止網絡蜘蛛訪問某些頁面的,但是壹般的網絡蜘蛛都會遵守這些協議,站長也可以用其他方式拒絕網絡蜘蛛抓取某些頁面。
-下載網頁時,網絡蜘蛛會識別網頁的HTML代碼,代碼部分會有META logo。通過這些標誌,我們可以告訴網絡蜘蛛這個網頁是否需要被抓取,也可以告訴網絡蜘蛛這個網頁中的鏈接是否需要被持續跟蹤。比如這個頁面不需要抓取,但是頁面中的鏈接需要跟蹤。
-搜索引擎建立網頁索引,處理的對象是文本文件。對於網絡蜘蛛來說,抓取的網頁包括各種格式,包括html、圖片、doc、pdf、多媒體、動態網頁等格式。在捕獲這些文件之後,需要提取這些文件中的文本信息。準確提取這些文檔的信息,壹方面對搜索引擎的搜索準確率有重要作用,另壹方面對網絡蜘蛛正確跟蹤其他鏈接也有壹定影響。對於doc、pdf等由專業廠商提供的軟件生成的文檔,廠商會提供相應的文本提取接口。網絡蜘蛛只需要調用這些插件的接口,就可以輕松提取文檔中的文本信息和文件的其他相關信息。但是HTML之類的文檔就不壹樣了。HTML有自己的語法。不同的命令標識符用於表示不同的格式,例如字體、顏色、位置等。提取文本信息時,需要過濾掉這些標識符。篩選標識符並不難,因為這些標識符都有壹定的規律,只要根據不同的標識符就能得到相應的信息。但是在識別這些消息時,需要同步記錄大量的版面信息,比如頁面的字體大小、標題、粗體顯示、關鍵詞等,這有助於計算網頁中文字的重要性。同時,對於HTML頁面來說,除了標題和正文之外,還會有很多廣告鏈接和公共渠道鏈接,這些鏈接與正文文本無關。在提取頁面內容的時候,也需要過濾掉這些無用的鏈接。例如,壹個網站有壹個“產品介紹”頻道,因為在網站的每個頁面上都可以找到導航欄。如果不過濾導航欄鏈接,搜索“產品介紹”時會搜索到網站中的每壹頁,無疑會帶來大量垃圾信息。過濾這些無效鏈接需要統計大量的網頁結構規則,提取壹些* * *特征,統壹過濾;對於壹些有特殊結果的重要網站,需要單獨處理。這就要求網絡蜘蛛的設計具有可擴展性。
-對於多媒體、圖片等文件,壹般通過鏈接的錨文本(即鏈接文本)和相關的文件註釋來判斷這些文件的內容。例如,如果有壹個鏈接的文本是“張可頤的照片”,而它的鏈接指向壹張bmp格式的圖片,那麽網絡蜘蛛就會知道這張圖片的內容是“張可頤的照片”。這樣,搜索引擎在搜索“張可頤”和“照片”時就可以找到這張圖片。另外,很多多媒體文件都有文件屬性,考慮這些屬性我們可以更好的理解文件的內容。
動態網頁壹直是網絡蜘蛛的難題。所謂動態網頁,是由程序自動生成的頁面,相對於靜態網頁而言。這樣做的好處是可以快速統壹的改變網頁的風格,也可以減少網頁占用的空間,但是也給網絡蜘蛛的抓取帶來了壹些麻煩。隨著開發語言的不斷增多,動態網頁的類型也越來越多,比如asp、jsp、php等等。這些類型的網頁對網絡蜘蛛來說可能更容易壹些。壹些腳本語言(如VBScript、JavaScript)生成的網頁,網絡蜘蛛處理起來更困難。如果他們想處理好這些頁面,網絡蜘蛛需要有自己的腳本解釋器。對於很多數據在數據庫中的網站來說,需要搜索該網站的數據庫來獲取信息,這給網絡蜘蛛的捕獲帶來了很大的困難。對於這類網站,如果網站設計者想讓這些數據被搜索引擎搜索到,就需要提供壹個可以遍歷整個數據庫內容的方法。
網頁內容的抽取壹直是網絡蜘蛛的壹項重要技術。整個系統壹般采用插件的形式,通過壹個插件管理服務程序,使用不同的插件來處理不同格式的網頁。這種方法的優點在於擴展性好。以後每發現壹個新的類型,都可以當作壹個插件來補充插件管理服務程序。
-由於網站的內容是不斷變化的,網絡蜘蛛也需要不斷更新它所抓取的網頁的內容,這就需要網絡蜘蛛按照壹定的周期掃描網站,看哪些頁面需要更新,哪些頁面是新添加的,哪些頁面是已經過期的死鏈接。
搜索引擎的更新周期對搜索引擎的召回率影響很大。如果更新周期過長,總會有壹些新生成的網頁搜索不到;如果周期太短,技術就很難實現,而且會浪費帶寬和服務器資源。不是所有搜索引擎的網站都在同壹個周期更新。對於壹些更新量較大的重要網站,更新周期較短。例如,壹些新聞網站每隔幾個小時就更新壹次。相反,對於壹些不重要的網站,更新周期較長,可能壹兩個月才更新壹次。
壹般來說,當網絡蜘蛛更新網站內容時,它不需要再次抓取網頁。對於大多數網頁,只需要判斷網頁的屬性(主要是日期),將獲得的屬性與上次爬取的屬性進行比較。如果是壹樣的,就不需要更新了。
-現在大家對網絡蜘蛛的工作原理有了初步的了解。了解了之後,就要在以後的網站制作中考慮蜘蛛的爬行規律了。比如做壹個網站地圖就很重要。好吧,如果妳有更好的看法,請貼在這裏。火鳥很願意和妳交流。* * *我們會研究網站制作技巧,盡力讓我們的網站符合標準,符合用戶的習慣!