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函数来解决“冲突”。占用的空间性价比很高.
添加回答
举报