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