不重復抓取?有很多初學者可能會覺得。爬蟲不是有深度優(yōu)先和廣度優(yōu)先兩種抓取策略嗎?你這怎么又多出來一個不重復抓取策略呢?其實我這幾天有不止一次聽到了有人說要在不同頁面增加同一頁面鏈接,才能保證收錄。我想真能保證嗎?涉及收錄問題的不止是抓沒抓吧?也從而延伸出今天的這篇文章,不重復抓取策略,以說明在一定時間內(nèi)的爬蟲抓取是有這樣規(guī)則的,當然還有很多其他的規(guī)則策略,以后有機會再說,例如優(yōu)先抓取策略、網(wǎng)頁重訪策略等等。
回歸正題,不重復抓取,就需要去判斷是否重復。那么就需要記住之前的抓取行為,我們舉一個簡單的例子。你在我的QQ群(9060800)里看到我發(fā)了一個URL鏈接,然后你是先看到了我發(fā)的這個鏈接,然后才會點擊并在瀏覽器打開看到具體內(nèi)容。這個等于爬蟲看到了后才會進行抓取。那怎么記錄呢?我們下面看一張圖:
如上圖,假設(shè)這是一個網(wǎng)頁上所有的鏈接,當爬蟲爬取這個頁面的鏈接時就全部發(fā)現(xiàn)了。當然爬取(理解為發(fā)現(xiàn)鏈接)與抓取(理解為抓取網(wǎng)頁)是同步進行的。一個發(fā)現(xiàn)了就告訴了另外一個,然后前面的繼續(xù)爬,后面的繼續(xù)抓。抓取完了就存起來,并標記上,如上圖,我們發(fā)現(xiàn)第2條記錄和第6條記錄是重復的。那么當爬蟲抓取第二條后,又爬取到了第6條就發(fā)現(xiàn)這條信息已經(jīng)抓取過了,那么就不再抓取了。爬蟲不是盡可能抓更多的東西嗎?為什么還要判斷重復的呢?
其實,我們可以想一下。互聯(lián)網(wǎng)有多少網(wǎng)站又有多少網(wǎng)頁呢?趙彥剛是真沒查證過,但這個量級應(yīng)該大的驚人了。而本身搜索引擎的爬取和抓取都是需要執(zhí)行一段代碼或一個函數(shù)。執(zhí)行一次就代表著要耗費一丁點資源。如果抓取的重復量級達到百億級別又會讓爬蟲做多少的無用功?耗費搜索引擎多大的成本?這成本就是錢,降低成本就是減少支出。當然不重復抓取不光體現(xiàn)在這里,但這個是最顯而易見的。你要知道的就是類似于內(nèi)容詳情頁的熱門推薦、相關(guān)文章、隨機推薦、最新文章的重復度有多大?是不是所有頁面都一樣?如果都一樣,那么可以適當調(diào)整下,在不影響網(wǎng)站本身的用戶體驗前提下,去適當做一些調(diào)整。畢竟網(wǎng)站是給用戶看的,搜索引擎只是獲取流量的一個重要入口,一種營銷較為重要的途徑!
申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!