爬虫计算数据特征值之信息摘要 hash 算法

几种常见的原始数据特征值的计算

  • 信息摘要 hash 算法
  • simhash 算法
  • 布隆过滤器方式

信息摘要 hash 算法介绍

可以将任意长度的文本、字节数据,通过一个算法得到一个固定长度的文本。例如 md5 (128位)、sha1(160位) 等。

只要源文本不一样,计算的带的结果必然不同。(摘要)

主要用于对比信息源是否一致,而且通常要比源小很多,所以可称之为摘要。

正因此,利用信息摘要算法能大大降低去重容器的存储空间使用率,并提高判断速度,且由于其极强的唯一性的特征,几乎不存在误判。

hash 算法得出的结果本质上是一串数值,例如 md5 的 128 位指的是二进制的长度,十六进制的长度是 32 位。
一个 十六进制 等于 四个 二进制。

简单使用

import hashlib

m5 = hashlib.md5()

m5.update("ruiyang".encode())

ret = m5.hexdigest()

print(ret)
# f4f122f0d6344f425134f6b6521e1108

# 将 16 进制转换为 10 进制
i = int("f", 16)
print(i)  # 15

# 将 10 进制转换为 2 进制
j = bin(i)
print(j)  # 0b1111 

信息摘要 hash 算法的去重方案实现

  • 普通内存版本
  • redis 持久化版本
  • mysql 持久化版本

后记

更新时间: 2020-02-03

发布了291 篇原创文章 · 获赞 104 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/Enjolras_fuu/article/details/104153694