- 精通Python網絡爬蟲:核心技術、框架與項目實戰
- 韋瑋
- 1396字
- 2019-01-05 03:22:43
3.3 網頁更新策略
一個網站的網頁經常會更新,作為爬蟲方,在網頁更新后,我們則需要對這些網頁進行重新爬取,那么什么時候去爬取合適呢?如果網站更新過慢,而爬蟲爬取得過于頻繁,則必然會增加爬蟲及網站服務器的壓力,若網站更新較快,但是爬蟲爬取的時間間隔較長,則我們爬取的內容版本會過老,不利于新內容的爬取。顯然,網站的更新頻率與爬蟲訪問網站的頻率越接近,則效果越好,當然,爬蟲服務器資源有限的時候,此時爬蟲也需要根據對應策略,讓不同的網頁具有不同的更新優先級,優先級高的網頁更新,將獲得較快的爬取響應。
具體來說,常見的網頁更新策略主要有3種:用戶體驗策略、歷史數據策略、聚類分析策略等,以下我們將分別進行講解。
在搜索引擎查詢某個關鍵詞的時候,會出現一個排名結果,在排名結果中,通常會有大量的網頁,但是,大部分用戶都只會關注排名靠前的網頁,所以,在爬蟲服務器資源有限的情況下,爬蟲會優先更新排名結果靠前的網頁。這種更新策略,我們稱之為用戶體驗策略,那么在這種策略中,爬蟲到底何時去爬取這些排名結果靠前的網頁呢?此時,爬取中會保留對應網頁的多個歷史版本,并進行對應分析,依據這多個歷史版本的內容更新、搜索質量影響、用戶體驗等信息,來確定對這些網頁的爬取周期。
除此之外,我們還可以使用歷史數據策略來確定對網頁更新爬取的周期。比如,我們可以依據某一個網頁的歷史更新數據,通過泊松過程進行建模等手段,預測該網頁下一次更新的時間,從而確定下一次對該網頁爬取的時間,即確定更新周期。
以上兩種策略,都需要歷史數據作為依據。有的時候,若一個網頁為新網頁,則不會有對應的歷史數據,并且,如果要依據歷史數據進行分析,則需要爬蟲服務器保存對應網頁的歷史版本信息,這無疑給爬蟲服務器帶來了更多的壓力和負擔。如果想要解決這些問題,則需要采取新的更新策略。比較常用的是聚類分析策略。那么什么是聚類分析策略呢?
在生活中,相信大家對分類已經非常熟悉,比如我們去商場,商場中的商品一般都分好類了,方便顧客去選購相應的商品,此時,商品分類的類別是固定的,是已經擬定好的。但是,假如商品的數量巨大,事先無法對其進行分類,或者說,根本不知道將會擁有哪些類別的商品,此時,我們應該如何解決將商品歸類的問題呢?
這時候我們可以用聚類的方式解決,依據商品之間的共性進行相應分析,將共性較多的商品聚為一類,此時,商品聚集成的類的數目是不一定的,但是能保證的是,聚在一起的商品之間一定有某種共性,即依據“物以類聚”的思想去實現。
同樣,在我們的聚類算法中,也會有類似的分析過程。
將聚類分析算法運用在爬蟲對網頁的更新上,我們可以這樣做,如圖3-4所示。

圖3-4 網頁更新策略之聚類算法
1)首先,經過大量的研究發現,網頁可能具有不同的內容,但是一般來說,具有類似屬性的網頁,其更新頻率類似。這是聚類分析算法運用在爬蟲網頁的更新上的一個前提指導思想。
2)有了1中的指導思想后,我們可以首先對海量的網頁進行聚類分析,在聚類之后,會形成多個類,每個類中的網頁具有類似的屬性,即一般具有類似的更新頻率。
3)聚類完成后,我們可以對同一個聚類中的網頁進行抽樣,然后求該抽樣結果的平均更新值,從而確定對每個聚類的爬行頻率。
以上,就是使用爬蟲爬取網頁的時候,常見的3種更新策略,我們掌握了其算法思想后,在后續我們進行爬蟲的實際開發的時候,編寫出來的爬蟲執行效率會更高,并且執行邏輯會更合理。