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