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封装对象实现时间效果
Apr 23 Python
python根据日期返回星期几的方法
Jul 06 Python
python数据结构之图深度优先和广度优先实例详解
Jul 08 Python
编写Python小程序来统计测试脚本的关键字
Mar 12 Python
Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
Jun 14 Python
详解使用python crontab设置linux定时任务
Dec 08 Python
python机器学习理论与实战(一)K近邻法
Jan 28 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
Mar 05 Python
python Celery定时任务的示例
Mar 13 Python
python 返回列表中某个值的索引方法
Nov 07 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
Python smtp邮件发送模块用法教程
Jun 15 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
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
PHP5.3以上版本安装ZendOptimizer扩展
2015/03/27 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
2014/04/07 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
js实现仿网易点击弹出提示同时背景变暗效果
2015/08/13 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
js中toString()和String()区别详解
2017/03/23 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
微信小程序授权登录及解密unionId出错的方法
2018/09/26 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
原生js实现each方法实例代码详解
2019/05/27 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
[02:26]DOTA2英雄米拉娜基础教程
2013/11/25 DOTA
利用Python爬取可用的代理IP
2016/08/18 Python
Python随机生成均匀分布在单位圆内的点代码示例
2017/11/13 Python
windows 下python+numpy安装实用教程
2017/12/23 Python
Python高级特性之闭包与装饰器实例详解
2019/11/19 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
python3 deque 双向队列创建与使用方法分析
2020/03/24 Python
大学团支书的自我评价分享
2013/12/14 职场文书
初婚未育未抱养证明
2014/01/12 职场文书
老师的检讨书
2014/02/23 职场文书
关于环保的演讲稿
2014/05/10 职场文书
霸气队列口号
2014/06/18 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
2015清明节祭奠英烈寄语大全
2015/03/04 职场文书
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang