引言:
當(dāng)我們在瀏覽相關(guān)網(wǎng)頁的時候會發(fā)現(xiàn),某些網(wǎng)站定時會在原有網(wǎng)頁數(shù)據(jù)的基礎(chǔ)上更新一批數(shù)據(jù),例如某電影網(wǎng)站會實時更新一批最近熱門的電影。小說網(wǎng)站會根據(jù)作者創(chuàng)作的進(jìn)度實時更新最新的章節(jié)數(shù)據(jù)等等。那么,類似的情景,當(dāng)我們在爬蟲的過程中遇到時,我們是不是需要定時更新程序以便能爬取到網(wǎng)站中最近更新的數(shù)據(jù)呢?
一.增量式爬蟲
概念:通過爬蟲程序監(jiān)測某網(wǎng)站數(shù)據(jù)更新的情況,以便可以爬取到該網(wǎng)站更新出的新數(shù)據(jù)。
如何進(jìn)行增量式的爬取工作:
·在發(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)站。第三個思路是相當(dāng)于是最后的一道防線。這樣做可以最大程度上達(dá)到去重的目的。
去重方法
將爬取過程中產(chǎn)生的url進(jìn)行存儲,存儲在redis的set中。當(dāng)下次進(jìn)行數(shù)據(jù)爬取時,首先對即將要發(fā)起的請求對應(yīng)的url在存儲的url的set中做判斷,如果存在則不進(jìn)行請求,否則才進(jìn)行請求。
對爬取到的網(wǎng)頁內(nèi)容進(jìn)行唯一標(biāo)識的制定,然后將該唯一表示存儲至redis的set中。當(dāng)下次爬取到網(wǎng)頁數(shù)據(jù)的時候,在進(jìn)行持久化存儲之前,首先可以先判斷該數(shù)據(jù)的唯一標(biāo)識在redis的set中是否存在,在決定是否進(jìn)行持久化存儲。
以上內(nèi)容為大家介紹了python之增量式爬蟲是什么?希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓(xùn)機構(gòu):千鋒教育。http://m.2667701.com/