最近在看一本書,發現當我們不實踐直接看原理是枯燥無味的,而實踐過後反過來看原理,會覺得很多道理,很多感悟。就拿我自己做反面教材,說我是搜索引擎優化工作者,我對搜索引擎的工作方式和基本的抓取原理,更新策略都不懂。那麼你呢?下面就分享下我的讀書筆記,僅當新人掃盲。
在介紹搜索引擎爬蟲的之前,首先了解爬蟲把網頁的分類,四種:
1,已過期的網頁和已下載的網頁
2,待下載的網頁
3,可知網頁
4,不可知網頁
下面我會詳細介紹搜索引擎是如何更新已下載網頁,如何下載待下載網頁,如何處理可知但未抓取的網頁,如何抓取不可知網頁。
一.處理待下載網頁
抓取策略:在一堆可知的網頁中,搜索引擎會抽出待抓取網頁url,爬蟲抓取網頁url在其中順序排列,形成一個隊列,調度程序每次從隊列頭取出某個 url,發送給網頁下載器下載內容,每個新下載的頁面包含的url會追加到帶抓取隊列中的末尾,形成循環,這是最基礎的算法。但不是唯一的方法。
這樣純粹是按照順序抓取,但是搜索引擎一般都選擇重要的頁面優先抓取。網頁重要性,大部分是按照網頁流行度抓取的,所為網頁流行度,谷歌官方有句話是指曝光度,通俗意思就是反向鏈接。(所以才有那麼多人做外鏈)
一般有四種方案選擇重要頁面:寬度優先遍歷策略,非完全pagerank(非谷歌pr值)策略,ocip策略,大站優先策略
1、寬度優先遍歷策略:將新下載的網頁包含的鏈接直接追加到帶抓取url隊列末尾。看似很機械,其實包含了一些優先策略:如果入鏈比較多,就更加容易被寬度優先遍歷策略抓取到,入鏈個數側面表現了網頁的重要性。(這就是為什麼要做好站內鏈接)
2、非完全pagerank:前面的是以數量來定的,這個是加入了質量。
初始算法:將已下載的的網頁加入待下載url隊列中形成網頁集合,在這個集合中計算pr,然後將帶抓取的隊列按照pr重新排列,就按照這個順序抓取。
(每次新下載網頁之後又要重新計算排序,顯得效率太低了)
每當攢夠k個網頁之後在重新計算。但是問題是:新抽出來的網頁沒後計算pr沒有pr值,他們的重要性可能比已經在隊列中的要高怎麼辦?
解決辦法:給每個新抽出來賦予一個臨時pr,這個臨時pr是根據入鏈傳到的pr值匯總的值。這樣在計算下,如果比隊列中高就有限抓取他。這就是非完全pr
(pr高的會優先抓取,收錄多排名靠前機會也大一些,所以會有那麼多人提高spr)
3、ocip(online page importance computation)策略:在線頁面重要性,改進的pr算法。
算法開始之前就每個頁面都給一樣的現金,,當這個頁面被下載了以後,這個現金就平均分給他的導出頁面,而自己的就清空。這些導出頁面放在帶抓取的隊列中,按照現金多少來優先抓取。
和pr區別:pr上一個頁面的不清空,每次都要迭代重新計算,而這個不用重新計算都清空了。而且pr存在無連接關系的跳轉,而這個只要無連接就不傳遞現金。
4、大站優先:帶抓取隊列中哪個網站的多就優先抓取哪個。(所以網站頁面要豐富,內容要豐富)
二、更新已下載網頁
上面就是搜索引擎的抓取策略。抓取完了的頁面就加入已下載的網頁中,已下載的網頁需要不斷地更新,那麼搜索引擎又是如何更新的呢?
一般的網頁更新策略:歷史參考策略,用戶體驗策略,聚類抽樣策略
1、歷史參考:過去頻繁更新的,現在可能也頻繁。利用模型預測未來更新時間。忽略導航欄和廣告的頻繁更新,所以導航的頻繁更新沒用,重在內容(現在知道為什麼更新內容要持續,有規律了吧)
2、用戶體驗:即使網頁已經過時了,需要更新了,但如果我更新了不影響用戶體驗搜索引擎就晚些更新。算法是:網頁更新對搜索引擎搜索質量的影響(一般看排名),影響大就盡快更新。所以他們會保存多個歷史網頁,根據以前更新所帶來的影響判斷更新對搜索引擎質量的影響大小。
以上兩種缺點:依賴歷史,要保存很多歷史數據,增加負擔。如果沒有歷史記錄就不准確了。
3、聚類抽樣策略:把網頁分類,根據同一類別網頁更新頻率更新所有這一類別的網頁。抽取最具代表性的,看他的更新頻率,以後同行業的都按照這個頻率。
三、抓取不可知網頁
不可知的網頁就是暗網,搜索引擎很難用常規方法抓取到的數據。比如沒有連接的網站,數據庫。比如一個產品庫存查詢,可能要輸入產品名稱,地區,型號一系列文本才能查詢庫存數量。而搜索引擎是難以抓取的。這就有了查詢組合和,isit算法。
先介紹下兩個概念:
1、富含信息查詢模版:就比如一個查詢系統,我設定一個查詢模版,每個文本框輸入什麼信號,地區,產品名稱等,形成不同的查詢組合。不同的組合之間差異很大,就是富含信息查詢模版。
這個模板是怎麼確定的呢?爬蟲先從一維模版開始,比如先別的不是輸入就輸入地區,看是否是富含信息查詢模版,是就擴展到二維模版,比如地區+型號。如此增加維度,直到沒有新的模版。
2、詞的組合:也許你納悶了,爬蟲怎麼知道這個輸入框要輸入什麼,是地區還是產品名稱,還是時間?所以爬蟲開始需要人工提示,人工提供一些初始查詢種子表,爬蟲更具這個表格查詢下載頁面,然後分析頁面,自動挖掘新的關鍵詞,形成新的查詢列表,然後在查詢,將結果提交給搜索引擎,直到沒有新內容為止。
這樣就完成了對暗網的抓取。
以上只是簡單的介紹一下爬蟲的抓取和更新框架,具體的算法可就復雜多了,有待我慢慢研究過後再分享。
文章