Spider系統(tǒng)的目標就是發(fā)現并抓取互聯網中一切有價值的網頁,百度官方也明確表示蜘蛛只可以抓取到盡可能多的有價值資源并保持系統(tǒng)及實際環(huán)境中頁面的一致性同時不給網站體驗造成壓力,也就是說蜘蛛不會抓取所有網站的所有頁面,對此蜘蛛有很多的抓取策略來盡量快而全的發(fā)現資源鏈接,提高抓取效率。只有這樣蜘蛛才能盡量滿足絕大部分網站,這也是為什么我們要做好網站的鏈接結構,接下來筆者就只針對一種蜘蛛對翻頁式網頁的抓住機制來發(fā)表一點看法。
為什么需要這個抓取機制?
當前大多數網站都用翻頁的形式來有序分布網站資源,當有新文章增加時,老資源往后推移到翻頁系列中。對蜘蛛來說,這種特定類型的索引頁是爬行的有效渠道,但是蜘蛛爬行頻率和網站文章更新頻率不盡相同,文章鏈接很有可能就被推到翻頁條中,這樣蜘蛛不可能每天從第1個翻頁條爬到第80個,然后一個文章一個文章的抓取,到數據庫對比,這樣太浪費蜘蛛時間,也浪費你網站的收錄時間,所以蜘蛛需要對這種特殊類型的翻頁式網頁來一個額外的抓取機制,從而保證收錄資源的完全。
如何判斷是否是有序翻頁式頁面?
判斷文章是否按發(fā)布時間有序排布是這類頁面的一個必要條件,下面會說到。那么如何判斷資源是否按發(fā)布時間有序排布呢?有些頁面中每個文章鏈接后面跟隨著對應的發(fā)布時間,通過文章鏈接對應的時間集合,判斷時間集合是否按大到小或小到大排序,如果是的話,則說明網頁中的資源是按發(fā)布時間有序排布,反之亦然。就算沒寫發(fā)布時間,蜘蛛寫可以根據文章本身的實際發(fā)布時間進行判斷。
該抓取機制原理?
針對這種翻頁式頁面,蜘蛛主要是通過記錄每次抓取網頁發(fā)現的文章鏈接,然后將此次發(fā)現的文章鏈接與歷史上發(fā)現的鏈接作比較,如果有交集,說明該次抓取發(fā)現了所有的新增文章,可以停止對后面翻頁條的抓取了;否則,說明該次抓取并未發(fā)現所有的新增文章,需要繼續(xù)抓取下一頁甚至下幾頁來發(fā)現所有的新增文章。
當前百度蜘蛛對網頁的類型,網頁中翻頁條的位置,翻頁條對應的鏈接,以及列表是否按照時間排序都會做相應的判斷,并根據實際的情況進行處理,但是蜘蛛畢竟不能做到100%的識別準確率,所以如果站長在做翻頁條時不要用JS,更不要用FALSH,同時要有頻率的進行文章更新,配合蜘蛛的抓取,這樣就可以極大地提高蜘蛛識別的準確率,從而提高蜘蛛在你網站的抓取效率。
在這里提醒大家本文只是從蜘蛛一個抓取機制進行的解說,不代表蜘蛛就此一種抓取機制,在實際情況中是很多機制同時進行的。