python将url进行md5哈希编码压缩

本文介绍在爬虫URL去重场景下,如何利用MD5哈希算法对URL进行压缩,减少内存占用,提高去重效率。文章包含具体示例代码及测试结果分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

python将url进行md5哈希编码压缩

应用背景

在写爬虫url去重的时候,可以直接将url保存为字符串到本地文件或数据库,去重的时候将其读入程序内存集合中,利用集合的元素唯一特性进行去重。但是直接按照字符串进行去重,程序的内存占用会很严重。所以一般会将url通过哈希算法压缩,进而保存,然后去重的时候对压缩后的编码进行对比去重。压缩后的url都是统一的长度,相同的url使用相同的哈希算法压缩,结果是相同的。

1. 示例代码

import hashlib

def get_md5(url):
  # 因为python3运行内存中编码方式为unicode,所以将urlmd5压缩之前首先需要编码为utf8。
	if isinstance(url, str):
	   	url = url.encode("utf-8")
	m = hashlib.md5()
	m.update(url)
	return m.hexdigest()

测试代码

def test_md5():
    import hashlib
    url = "www.baidu.com"
    # if isinstance(url, str):
    #     url = url.encode("utf-8")
    m = hashlib.md5()
    m.update(url)
    md5_url = m.hexdigest()
    print(md5_url)

测试结果分析

  1. md5hashing之前不进行encoded编码:
    1)输出:
    TypeError:Unicode-objects must be encoded before hashing
    2)原因分析:
    python3内部编码方式为Unicode方式,而hashlib.md5()不能接收Unicode编码字符。

  2. md5 hashing之前进行encoded编码,编码方式utf-8:
    1)输出:dab19e82e1f9a681ee73346d3e7a575e

  3. 编码方式改为ASCII,GB2312 ,GBK,BIG5,ANSI均可以正常输出md5编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值