scrapy redis的布隆去重

2021-09-13 11:50:29 字數 1133 閱讀 6318

- 為什麼要使用布隆去重?

scrapy自帶去重機制,即將所需要爬取的網頁放在set中來達到去重的目的,但是在實際工作中,我們需要更新資料的時候往往不需要爬取已經爬取過的頁面,這時候set去重就達不到目的了,會造成重複爬取url,所以我們要用到布隆去重。
- 布隆去重的優點和缺點優點

相比於其它的資料結構,布隆過濾器在空間和時間方面都有巨大的優勢。布隆過濾器儲存空間和插入/查詢時間都是常數。另外, hash 函式相互之間沒有關係,方便由硬體並行實現。布隆過濾器不需要儲存元素本身,在某些對保密要求非常嚴格的場合有優勢

缺點但是布隆過濾器的缺點和優點一樣明顯。誤算率(false positive)是其中之一。隨著存入的元素數量增加,誤算率隨之增加。但是如果元素數量太少,則使用雜湊表足矣。

開啟專案,把scrapy_redis從環境檔案中拷貝乙份貼上到scrapy專案中,這樣做的目的是為這個專案單獨配置去重方案

而環境中的scrapy_redis卻不會變,其他專案不用使用布隆去重方案。

修改scrapy_reids中的dupefilter檔案,修改其去重策略。

修改其 request_seen函式

按照分布式爬蟲部署步驟,繼續進行即可使用布隆去重策略

bitmap去重與布隆過濾器

通過乙個位元位來存乙個位址,占用記憶體很小 bloomfilter 會開闢乙個m位的bitarray 位陣列 開始所有資料全部置 0 當乙個元素過來時,能過多個雜湊函式 h1,h2,h3.計算不同的在雜湊值,並通過雜湊值找到對應的bitarray下標處,將裡面的值 0 置為 1 python中使用布...

Bloom Filter 布隆演算法

日常生活中,包括在設計計算機軟體時,我們經常要判斷乙個元素是否在乙個集合中。比如在字處理軟體中,需要檢查乙個英語單詞是否拼寫正確 也就是要判斷它是否在已知的字典中 在 fbi,乙個嫌疑人的名字是否已經在嫌疑名單上 在網路爬蟲裡,乙個 是否被訪問過等等。最直接的方法就是將集合中全部的元素存在計算機中,...

URL去重 布隆過濾器的簡單實現

如何不採集重複的網頁?去重可以使用布隆過濾器,每個執行緒使用乙個bitarray,裡面儲存本批源頁面上次抓取的頁面的雜湊值情況,抓取下來的源頁面分析鏈結後,去這個bitarray裡判斷以前有沒有抓過這個頁面,沒有的話就抓下來,抓過的話就不管了。假設乙個源頁面有30個鏈結,一批10w個源頁面,300w...