優秀爬蟲的特性
優秀爬蟲的特性對于不同的應用來說,可能實現的方式各有差異,但是實用的爬蟲都應該具備以下特性:
1.高性能
互聯網的網頁數量是海量的,所以爬蟲的性能至關重要。這里的性能主要是指爬蟲下載網頁的抓取速度,常見的評價方式是以爬蟲每秒能夠下載的網頁數量作為性能指標,單位時間能夠下載的網頁數量越多,爬蟲的性能越高。
要提高爬蟲的性能,在設計時程序訪問磁盤的操作方法及具體實現時數據結構的選擇很關鍵,比如對于待抓取URL隊列和已抓取URL隊列,因為URL數量非常大,不同實現方式性能表現迥異,所以高效的數據結構對于爬蟲性能影響很大。
2.可擴展性
即使單個爬蟲的性能很高,要將所有網頁都下載到本地,仍然需要相當長的時間周期,為了能夠盡可能縮短抓取周期,爬蟲系統應該有很好地可擴展性,即很容易通過增加抓取服務器和爬蟲數量來達到此目的。
目前實用的大型網絡爬蟲一定是分布式運行的,即多臺服務器專做抓取。每臺服務器部署多個爬蟲,每個爬蟲多線程運行,通過多種方式增加并發性。
對于巨型的搜索引擎服務商來說,可能還要在全球范圍、不同地域分別部署數據中心,爬蟲也被分配到不同的數據中心,這樣對于提高爬蟲系統的整體性能是很有幫助的。
3.健壯性
爬蟲要訪問各種類型的網站服務器,可能會遇到很多種非正常情況:比如網頁HTML編碼不規范、 被抓取服務器突然死機,甚至爬蟲陷阱等。爬蟲對各種異常情況能否正確處理非常重要,否則可能會不定期停止工作,這是無法忍受的。
從另外一個角度來講,假設爬蟲程序在抓取過程中死掉,或者爬蟲所在的服務器宕機,健壯的爬蟲應能做到:再次啟動爬蟲時,能夠恢復之前抓取的內容和數據結構,而不是每次都需要把所有工作完全從頭做起,這也是爬蟲健壯性的一種體現。
4.友好性
爬蟲的友好性包含兩方面的含義:一是保護網站的部分私密性;另一是減少被抓取網站的網絡負載。爬蟲抓取的對象是各類型的網站,對于網站所有者來說,有些內容并不希望被所有人搜到,所以需要設定協議,來告知爬蟲哪些內容是不允許抓取的。目前有兩種主流的方法可達到此目的:爬蟲禁抓協議和網頁禁抓標記。
爬蟲禁抓協議指的是由網站所有者生成一個指定的文件robot.txt,并放在網站服務器的根目錄下,這個文件指明了網站中哪些目錄下的網頁是不允許爬蟲抓取的。具有友好性的爬蟲在抓取該網站的網頁前,首先要讀取robot.txt文件,對于禁止抓取的網頁不進行下載。
網頁禁抓標記一般在網頁的HTML代碼里加入meta name=”robots”標記,content字段指出允許或者不允許爬蟲的哪些行為。可以分為兩種情形:一種是告知爬蟲不要索引該網頁內容,以noindex作為標記;另外一種情形是告知爬蟲不要抓取網頁所包含的鏈接,以nofollow作為標記。通過這種方式,可以達到對網頁內容的一種隱私保護。
遵循以上協議的爬蟲可以被認為是友好的,這是從保護私密性的角度來考慮的;另外一種友好性則是,希望爬蟲對某網站的訪問造成的網路負載較低。
爬蟲一般會根據網頁的鏈接連續獲取某網站的網頁,如果爬蟲訪問網站頻率過高,會給網站服務器造成很大的訪問壓力,有時候甚至會影響網站的正常訪問,造成類似DOS攻擊的效果。
為了減少網站的網絡負載,友好性的爬蟲應該在抓取策略部署時考慮每個被抓取網站的負載,在盡可能不影響爬蟲性能的情況下,減少對單一站點短期內的高頻訪問。
非常感謝您有耐心的讀完商企云建站公司的這篇文章:"seo優化公司了解入門爬蟲技術原理三",僅為提供更多信息供用戶參考使用或為學習交流的方便。我們公司不僅提供:網站建設、網站制作、seo網站優化、網站推廣、APP開發、快速排名、網頁設計、建網站等服務,而且利用互聯網營銷手法,多平臺,多樣化進行品牌內容鋪設,營造企業正面形象,誠摯為您服務,歡迎您的到來。