python实现字符串加密 生成唯一固定长度字符串


Posted in Python onMarch 22, 2019

背景

有时候爬虫爬过的url需要进行指纹核对,比如Scrapy就是进行指纹核对,如果是指纹重复则不再爬取。当然在入库的时候我还是需要做一次核对,否则如果爬虫有漏掉,进入数据库就不合适了。

思路

根据Scrapy的指纹生成方式,这次的指纹生成方式也是用hash的MD5对目标URL进行加密,生成固定长度的字符串,然后在数据库里面将字段设置成unique,这样的话在保证url固定长度的情况下还能够保证入库后的唯一性,进最大努力避免出现重复的数据。

指纹生成代码

新建一个文件,然后在里面编写指纹生成的方法,在使用的时候from import进来,调用方法即可。代码为:

import hashlib
 
def get_md5(url):
 """
 由于hash不处理unicode编码的字符串(python3默认字符串是unicode)
  所以这里判断是否字符串,如果是则进行转码
  初始化md5、将url进行加密、然后返回加密字串
 """
 if isinstance(url, str):
  url = url.encode("utf-8")
 md = hashlib.md5()
 md.update(url)
 return md.hexdigest()

为了验证代码的可用性,再加上代码:

if __name__ == "__main__":
 urls = "http://www.baidus.com"
 print(get_md5(urls))

在本地运行无误,再把下面这串删除。等到调用的时候from import get_md5把文件和方法引入,就可以使用了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python多线程编程(四):使用Lock互斥锁
Apr 05 Python
Python利用ansible分发处理任务
Aug 04 Python
Python 如何访问外围作用域中的变量
Sep 11 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
Python基于pandas实现json格式转换成dataframe的方法
Jun 22 Python
Python Unittest根据不同测试环境跳过用例的方法
Dec 16 Python
Python3匿名函数lambda介绍与使用示例
May 18 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
python字符串的拼接方法总结
Nov 18 Python
python读取dicom图像示例(SimpleITK和dicom包实现)
Jan 16 Python
浅析python标准库中的glob
Mar 13 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
详解Python循环作用域与闭包
Mar 21 #Python
浅谈python之高阶函数和匿名函数
Mar 21 #Python
浅谈Python反射 & 单例模式
Mar 21 #Python
详解Python中is和==的区别
Mar 21 #Python
浅谈Python的条件判断语句if/else语句
Mar 21 #Python
python使用thrift教程的方法示例
Mar 21 #Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 #Python
You might like
如何在PHP中使用Oracle数据库(5)
2006/10/09 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
简单谈谈PHP中的Reload操作
2016/12/12 PHP
PHP基于ORM方式操作MySQL数据库实例
2017/06/21 PHP
Jquery阻止事件冒泡 event.stopPropagation
2011/12/11 Javascript
js写出遮罩层登陆框和对联广告并自动跟随滚动条滚动
2014/04/29 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
Java File类的常用方法总结
2015/03/18 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
Underscore之Array_动力节点Java学院整理
2017/07/10 Javascript
通过命令行创建vue项目的方法
2017/07/20 Javascript
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
2017/12/29 Javascript
详解node.js 下载图片的 2 种方式
2018/03/02 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
全面理解Python中self的用法
2016/06/04 Python
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
2018/07/12 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
pyhanlp安装介绍和简单应用
2019/02/22 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
python 常见的排序算法实现汇总
2020/08/21 Python
CSS3制作彩色进度条样式的代码示例分享
2016/06/23 HTML / CSS
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
计算机专业职业生涯规划范文
2014/01/19 职场文书
学习考察心得体会
2014/09/04 职场文书
公安机关党的群众路线教育实践活动剖析材料
2014/10/10 职场文书
宇宙与人观后感
2015/06/05 职场文书
python - asyncio异步编程
2021/04/06 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript
SQL Server删除表中的重复数据
2022/05/25 SQL Server