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处理文本文件并生成指定格式的文件
Jul 31 Python
Python文件读取的3种方法及路径转义
Jun 21 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
python基础教程项目四之新闻聚合
Apr 02 Python
Python学习笔记基本数据结构之序列类型list tuple range用法分析
Jun 08 Python
python递归法实现简易连连看小游戏
Mar 25 Python
numpy.transpose()实现数组的转置例子
Dec 02 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
Dec 23 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
Feb 15 Python
python实现从尾到头打印单链表操作示例
Feb 22 Python
浅谈Python 参数与变量
Jun 20 Python
判断Python中的Nonetype类型
May 25 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经典的给图片加水印程序
2006/12/06 PHP
php下MYSQL limit的优化
2008/01/10 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
可简单避免的三个JS发布错误的详细介绍
2013/08/02 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
jquery弹出层类代码分享
2013/12/27 Javascript
JS文本获得焦点清除文本文字的示例代码
2014/01/13 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
js中iframe调用父页面的方法
2014/10/30 Javascript
轻松创建nodejs服务器(7):阻塞操作的实现
2014/12/18 NodeJs
JavaScript学习笔记之Function对象
2015/01/22 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
Html5+jQuery+CSS制作相册小记录
2016/12/30 Javascript
原生js实现商品放大镜效果
2017/01/12 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
Vue.js -- 过滤器使用总结
2017/02/18 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
[01:19]2014DOTA2国际邀请赛 采访TITAN战队ohaiyo 能赢DK很幸运
2014/07/12 DOTA
python发送邮件接收邮件示例分享
2014/01/21 Python
Python基于动态规划算法解决01背包问题实例
2017/12/06 Python
Python实现模拟浏览器请求及会话保持操作示例
2018/07/30 Python
Python实现多属性排序的方法
2018/12/05 Python
Python实现微信消息防撤回功能的实例代码
2019/04/29 Python
python 求定积分和不定积分示例
2019/11/20 Python
python 图像的离散傅立叶变换实例
2020/01/02 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
python实现三种随机请求头方式
2021/01/05 Python
鞋子女王塔玛拉·梅隆同名奢侈品牌:Tamara Mellon
2017/11/22 全球购物
得到Class的三个过程是什么
2012/08/10 面试题
建筑投标担保书
2014/05/20 职场文书
员工教育培训协议书
2014/09/27 职场文书
大学生村官个人总结
2015/02/15 职场文书