爬蟲:如何判斷一個網(wǎng)頁已經(jīng)更新?

一個網(wǎng)頁是否更新,是很多爬蟲開發(fā)人員都會碰到的問題,如果只是一次性抓取來使用,那這個問題無關(guān)緊要,抓一遍完事,但是工程中的爬蟲通常需要長期運行,如果內(nèi)容更新,需要及時抓取。

思路1:定期抓取

這是一個常見的獲取更新內(nèi)容的思路,這種方式無狀態(tài),傻瓜式的,我并不需要知道網(wǎng)頁到底更新哪些內(nèi)容,我只要每次拿網(wǎng)頁的內(nèi)容去數(shù)據(jù)庫里去重插入即可。
這種思路問題就是浪費資源。無論對方更新沒有,都得去抓取一遍。

思路2:RSS訂閱

RSS(簡易信息聚合),一種基于XML格式的內(nèi)容包裝和投遞協(xié)議,可以用于同步網(wǎng)頁內(nèi)容,目前適用于博客,新聞等。
這種思路問題是并不是所有網(wǎng)站都提供RSS源的,雖說有萬能的rsshub,但是rsshub也是需要開發(fā)人員自己去維護的。

思路3:If-Modified-Since 狀態(tài)碼

If-Modified-Since: 允許在對應(yīng)的內(nèi)容未被修改的情況下返回304未修改( 304 Not Modified )維基百科
示例:If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT

If-Modified-Since可用于web緩存,它是HTTP header的一個部分,若HTTP響應(yīng)有一個Last-Modified頭,緩存可以使用If-Modified-Since頭來發(fā)出一個條件請求,來查看它是否已經(jīng)改變。

這種思路操作如下:
1 第一次先請求某個網(wǎng)頁,抓取到本地,假設(shè)文件名為 a.html。這時文件系統(tǒng)有個文件的修改時間。

2 第二次訪問網(wǎng)頁,如果發(fā)現(xiàn)本地已經(jīng)有了 a.html,則向服務(wù)器發(fā)送一個 If-Modified-Since 的請求。 把 a.html 的修改時間寫到請求里。

3 如果網(wǎng)頁更新了,服務(wù)器會返回一個 200 的應(yīng)答,這時就重新抓取網(wǎng)頁,更新本地文件。

4 如果網(wǎng)頁沒有更新,服務(wù)器會返回一個304的應(yīng)答。這時就不需要更新文件了。

這種思路的問題是這種方法適用于靜態(tài)網(wǎng)頁的更新,對于動態(tài)從服務(wù)器取數(shù)據(jù)的動態(tài)網(wǎng)頁不適用。

思路4:網(wǎng)頁內(nèi)容相似度比較

這里的網(wǎng)頁內(nèi)容指的是網(wǎng)頁的正文內(nèi)容,不包括訪問量等非關(guān)鍵區(qū)域文本。
網(wǎng)上提供的做法有網(wǎng)頁指紋+海明距離的算法,兩次抓取網(wǎng)頁海明距離越大,變化越大,海明距離的大小需要根據(jù)實際條件調(diào)整。

總結(jié)

網(wǎng)頁判斷更細沒有固定套路,需要根據(jù)項目和網(wǎng)站情況,選擇合適的方法進行判斷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,825評論 1 45
  • 瀏覽器對于請求資源, 流程如圖所示: 可以看到瀏覽器的緩存機制分為兩個部分: 1、當(dāng)前緩存是否過期? 2、服務(wù)器中...
    zhoulujun閱讀 1,289評論 0 3
  • API定義規(guī)范 本規(guī)范設(shè)計基于如下使用場景: 請求頻率不是非常高:如果產(chǎn)品的使用周期內(nèi)請求頻率非常高,建議使用雙通...
    有涯逐無涯閱讀 2,934評論 0 6
  • 網(wǎng)絡(luò)特有的延遲以及數(shù)據(jù)傳輸?shù)某杀荆萍s互聯(lián)網(wǎng)快速獲取Web資源。為此,HTTP協(xié)議引入緩存以空間換時間,使瀏覽器緩...
    大頭8086閱讀 3,204評論 2 12
  • 原文鏈接:http://tech110.blog.51cto.com/438717/549764 Http的Cac...
    五鮮譜閱讀 892評論 0 2

友情鏈接更多精彩內(nèi)容