引言:
當我們在瀏覽相關網(wǎng)頁的時候會發(fā)現(xiàn),某些網(wǎng)站定時會在原有網(wǎng)頁數(shù)據(jù)的基礎上更新一批數(shù)據(jù),例如某電影網(wǎng)站會實時更新一批最近熱門的電影。小說網(wǎng)站會根據(jù)作者創(chuàng)作的進度實時更新最新的章節(jié)數(shù)據(jù)等等。那么,類似的情景,當我們在爬蟲的過程中遇到時,我們是不是需要定時更新程序以便能爬取到網(wǎng)站中最近更新的數(shù)據(jù)呢?
一.增量式爬蟲
概念:通過爬蟲程序監(jiān)測某網(wǎng)站數(shù)據(jù)更新的情況,以便可以爬取到該網(wǎng)站更新出的新數(shù)據(jù)。
如何進行增量式的爬取工作:
·在發(fā)送請求之前判斷這個URL是不是之前爬取過
·在解析內(nèi)容后判斷這部分內(nèi)容是不是之前爬取過
·寫入存儲介質(zhì)時判斷內(nèi)容是不是已經(jīng)在介質(zhì)中存在
分析:
不難發(fā)現(xiàn),其實增量爬取的核心是去重,至于去重的操作在哪個步驟起作用,只能說各有利弊。在我看來,前兩種思路需要根據(jù)實際情況取一個(也可能都用)。第一種思路適合不斷有新頁面出現(xiàn)的網(wǎng)站,比如說小說的新章節(jié),每天的最新新聞等等;第二種思路則適合頁面內(nèi)容會更新的網(wǎng)站。第三個思路是相當于是最后的一道防線。這樣做可以最大程度上達到去重的目的。
去重方法
將爬取過程中產(chǎn)生的url進行存儲,存儲在redis的set中。當下次進行數(shù)據(jù)爬取時,首先對即將要發(fā)起的請求對應的url在存儲的url的set中做判斷,如果存在則不進行請求,否則才進行請求。
對爬取到的網(wǎng)頁內(nèi)容進行唯一標識的制定,然后將該唯一表示存儲至redis的set中。當下次爬取到網(wǎng)頁數(shù)據(jù)的時候,在進行持久化存儲之前,首先可以先判斷該數(shù)據(jù)的唯一標識在redis的set中是否存在,在決定是否進行持久化存儲。
以上內(nèi)容為大家介紹了python之增量式爬蟲是什么?希望對大家有所幫助,如果想要了解更多Python相關知識,請關注IT培訓機構:千鋒教育。http://madgrindclothing.com/