搜索引擎爬蟲抓取我們的網(wǎng)頁,是實現(xiàn)SEO優(yōu)化工作的第一步。如果沒有抓取,網(wǎng)站就不會被搜索引擎收錄,那也不會有排名了。所以針對每一個為SEO從業(yè)者,抓取是第一步!
實際上,大多數(shù)SEO從業(yè)者知道的搜索引擎抓取算法只有深度優(yōu)先和寬度優(yōu)先抓取兩個策略。但實際不然,爬蟲抓取的網(wǎng)頁的策略有5個。
我們先來看下百度蜘蛛(搜索引擎)的工作流程
所謂種子URL所指的就是最開始選定的URL地址,大多數(shù)情況下,網(wǎng)站的首頁、頻道頁等豐富性內(nèi)容更多的頁面會被作為種子URL;
然后將這些種子URL放入到待抓取的URL列表中;
爬蟲從待抓取的URL列表中逐個進行讀取,讀取URL的過程中,會將URL通過DNS解析,把這個URL地址轉(zhuǎn)換成網(wǎng)站服務器的IP地址+相對路徑的方式;
接下來把這個地址交給網(wǎng)頁下載器(所謂網(wǎng)頁下載器,顧名思義就是負責下載網(wǎng)頁內(nèi)容的一個模塊);
對于下載到本地的網(wǎng)頁,也就是我們網(wǎng)頁的源代碼,一方面要將這個網(wǎng)頁存儲到網(wǎng)頁庫中,另一方面會從下載網(wǎng)頁中再次提取URL地址。
新提取出來的URL地址會先在已抓取的URL列表中進行比對,檢查一下這個網(wǎng)頁是不是被抓取了。
如果網(wǎng)頁沒有被抓取,就將新的URL地址放入到待抓取的URL列表的末尾,等待被抓取。
就這樣循環(huán)的工作著,直到待抓取隊列為空的時候,爬蟲就算完成了抓取的全過程。
然后以下載的網(wǎng)頁,就都會進入到一定的分析中,分析后進行索引,我們就能看到收錄結(jié)果了。
對于真正的爬蟲來說,先抓哪些頁面、后抓哪些頁面,以及不抓哪些頁面等等都是有一定的策略的,這里講述的是一個比較通過、普遍的爬蟲抓取流程,身為SEO的我們,知道這些足以。
寬度優(yōu)先抓取策略,一個歷史悠久且一直被關注的抓取策略,從搜索引擎爬蟲誕生至今一直被使用的抓取策略,甚至很多新的策略也是通過這個作為基準的。
寬度優(yōu)先抓取策略是通過待抓取URL列表為基準進行抓取,發(fā)現(xiàn)的新鏈接,且判斷為未抓取過的基本就直接存放到待抓取URL列表的末尾,等待抓取。
如上圖,我們假設爬蟲的待抓取URL列表中,只有A,爬蟲從A網(wǎng)頁開始抓取,從A中提取了B、C、D網(wǎng)頁,于是將B、C、D放入到抓取隊列,再依次獲得E、F、G、H、I網(wǎng)頁并插入到待抓取的URL列表中,以此類推,周而復始。
深度優(yōu)先抓取的策略是爬蟲會從待抓取列表中抓取第一個URL,然后沿著這個URL持續(xù)抓取這個頁面的其他URL,直到處理完這個線路后,再從待抓取的列表中,抓取第二個,以此類推。下面給了一個圖解。
A作為第一個從待抓取列表的URL,爬蟲開始抓取,然后抓取到B、C、D、E、F,但B、C、D中都沒有后續(xù)的鏈接了(這里也是會去掉已經(jīng)抓取過的頁面),從E中發(fā)現(xiàn)了H,順著H,發(fā)現(xiàn)了I,然后就沒有更多了。在F中發(fā)現(xiàn)了G,然后針對這個鏈接的抓取就結(jié)束了。從待抓取列表中,拿到下一個鏈接繼續(xù)上述操作。
相信PageRank算法很多人都知道,我們SEO的大白話理解就是鏈接傳遞權重的算法。而如果應用在爬蟲抓取上,是怎樣的邏輯呢?首先爬蟲的目的是去下載網(wǎng)頁,與此同時爬蟲不能看到所有的網(wǎng)頁指向某一網(wǎng)頁的鏈接,所以在抓取的過程中,爬蟲是無法計算全部網(wǎng)頁的pagerank的,就導致了在抓取過程中計算的pagerank不是太靠譜。
那非完全pagerank抓取策略,就是基于在爬蟲不能看到所有網(wǎng)頁指向某一網(wǎng)頁的鏈接,而只能看到部分的情況,還要進行pagerank的計算結(jié)果。
它的具體策略就是對已經(jīng)下載了的網(wǎng)頁,加上待抓取的URL列表里的網(wǎng)頁一起,形成一個匯總。在這個匯總內(nèi)進行pagerank的計算。在計算完成后,待抓取的url列表里的每一個url都會得到一個pagerank值,然后按照這個值進行倒序排列。先抓取pagerank分值最高的,然后逐個抓取。
那問題來了?待抓取URL列表中,在末尾新增一個URL,就要重新計算一次嗎?
實際不是這樣的。搜索引擎會等到在待抓取URL列表的新增URL達到一定數(shù)量時,再進行重新抓取。這樣效率會提升很多。畢竟爬蟲抓取到新增的那第一個,也需要時間的。
OPIC是online page importance computation的縮寫,意思是“在線頁面重要性計算”,這個是pagerank的升級版本。
它具體的策略邏輯是這樣,爬蟲把互聯(lián)網(wǎng)上所有的URL都賦予一個初始的分值,且每個URL都是同等的分值。每當下載一個網(wǎng)頁就把這個網(wǎng)頁的分值平均分攤給這個頁面內(nèi)的所有鏈接。自然這個頁面的分值就要被清空了。而對于待抓取的URL列表里(當然,剛才那個網(wǎng)頁被清空了分值,也是因為它已經(jīng)被抓取了),則根據(jù)誰的分值最高就優(yōu)先抓取誰。
區(qū)別于pagerank,opic是實時計算的。這里提醒我們,如果單純只考慮opic這個抓取策略來說。無論是這個策略還是pagerank策略都證實了一個邏輯。我們新產(chǎn)生的網(wǎng)頁,被鏈接的次數(shù)越多,被抓取的概率就越大。
是不是值得你思考一下你的網(wǎng)頁布局了?
大站優(yōu)先抓取,是不是就顧名思義了呢?大型網(wǎng)站就會有先抓???不過這里是有兩種解釋的。我個人認為這兩種解釋爬蟲都在使用。
大站優(yōu)先抓取的解釋1:比較貼合字面意思,爬蟲會根據(jù)待抓取列表中的URL進行歸類,然后判斷域名對應的網(wǎng)站級別。例如權重越高的網(wǎng)站所屬域名越應該優(yōu)先抓取。
大站優(yōu)先抓取解釋2:爬蟲將待抓取列表里的URL按照域名進行歸類,然后計算數(shù)量。其所屬域名在待抓取列表里數(shù)量最多的優(yōu)先抓取。
這兩個解釋一個是針對網(wǎng)站權重高的,一個是針對每天文章發(fā)布數(shù)量高且發(fā)布很集中的。不過我們試想一下,發(fā)布那么集中且那么多篇的站點,一般也都是大站了吧?
這里讓我們思考的是什么呢?
寫文章的同時,應該集中一個時間點推送給搜索引擎。不能一個小時一篇,太分散。不過這個有待考證,有經(jīng)歷的同學可以進行一下測試。