7 回答
TA貢獻1796條經驗 獲得超4個贊
md5sum一樣,但每次python算的md5值不一樣,說明:你的用法錯了,我目測你在每次計算md5值的時候還是用前一次用過的md5對象,這當然不一樣了。如果同一個md5對象第一次update了'a',沒有清空數據,第二次又update了'a',那你再調hexdigest算出來的是'aa'的md5值:
import hashlib
m = hashlib.md5()
m.update('a')
print m.hexdigest() // 0cc175b9c0f1b6a831c399e269772661
m.update('a')
print m.hexdigest() // 4124bc0a9335c27f086f24ba207a4912
m = hashlib.md5()
m.update('aa')
print m.hexdigest() // 4124bc0a9335c27f086f24ba207a4912
可以看到,兩次update('a')的效果和一次update('aa')的效果是相同的
TA貢獻1821條經驗 獲得超6個贊
如果相同url出現的位置具有規律,比如你上面的mirror總是第四個
如果相同url出現完全沒有規律,那么你可以新建一個set,或者其他容器,爬過的url放入該容器。在可能重復的地方,驗證該url是否已經存在于該容器。
TA貢獻1811條經驗 獲得超6個贊
使用Python的set數據結構, 每次遇到一個鏈接,判斷它是否已經在該set中,是=>不添加; 不是=>添加到set中;
然后是一個queue,從set中pop鏈接,針對每一個鏈接做相應處理
不知我講清楚沒有?
TA貢獻1851條經驗 獲得超4個贊
判斷網頁是否抓去過,可以使用bloomFilter算法.可以準確的判斷不存在.判斷存在則有一定的概率誤差.網頁抓取這種可以接受這種誤差.
在搜索引擎領域,Bloom-Filter最常用于網絡蜘蛛(Spider)的URL過濾,網絡蜘蛛通常有一個URL列表,保存著將要下載和已經下載的網頁的URL,網絡蜘蛛下載了一個網頁,從網頁中提取到新的URL后,需要判斷該URL是否已經存在于列表中。此時,Bloom-Filter算法是最好的選擇。Bloom-Filter算法的核心思想就是利用多個不同的Hash函數來解決“沖突”。占用的空間性價比很高.
添加回答
舉報
