1.爬蟲時將爬取過的url存放到資料庫中,利用資料庫進行url的去重;每請求乙個url之前,都現在資料庫中查詢一下。方法最簡單,效率是最低的。
2.將已經請求過的url儲存到set中,而set集合是在記憶體中建立的,訪問效率比資料庫的方式要快很多,只需要很簡單的乙個方法,就可以實現url的去重。
缺點:單純的使用set集合的話,占用記憶體太大。
1個字元=2個位元組
1gb=1024mb
1mb=1024kb
1kb=1024byte
1byte=8bit
100000000 * 50個字元 * 2byte/1024(kb)/1024(mb)/1024 = 9gb
3.先將url經過md5的加密,可以將不固定長度的url加密成固定長度的url,然後再存到set記憶體中;
100000000 * 16byte/1024(kb)/1024(mb)/1024 = 1gb
4.bloomfilter布隆去重:hashmap對映函式,它的去重原理不是直接將url直接存到記憶體中,而是給url對映乙個值在記憶體中。
100000000 * 1byte/1024/1024/1024 = 0.09gb
python爬蟲去重策略 爬蟲去重策略
1 使用scrapy自帶的set集合去重,當程式結束的時候會被清空,缺點 再次執行會導致資料重複。2 使用mysql做去重,對url位址進行md5,base64加密,加密之後會得到一串字元,判斷字串 是否在mysql表中,如果在表示已經爬取過了,如果不在,表示沒有爬取,執行請求,將加密後的url 3...
python爬蟲去重策略 爬蟲去重策略
下面我會從程式 資料庫等幾個層面詳細敘述一下相應的去重策略。程式層面,像十萬以下url的抓取可以簡單的用set來實現去重。如果是百萬或者千萬量級的話,考慮到效能,我們應該使用基於hash的set實現去重。知道了前面雜湊的知識,你肯定就懂這是為什麼了。雜湊使得我們並不需要對比超長的url以及param...
爬蟲去重策略
爬蟲去重策略 將訪問過的url儲存到資料庫中。最簡單的方式。即使資料庫有快取,但每次都從資料庫中查詢url,效率低下。將訪問過的url儲存到set中,只需要o 1 的代價就可以查詢url url經過md5等方法雜湊後儲存到set中 使用bitmap方法,將訪問過的url通過hash函式對映到某一位 ...