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