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 相关文章推荐
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python实现针对给定字符串寻找最长非重复子串的方法
Apr 21 Python
python3调用百度翻译API实现实时翻译
Aug 16 Python
python学生信息管理系统(完整版)
Apr 05 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
Django 对IP访问频率进行限制的例子
Aug 30 Python
python之array赋值技巧分享
Nov 28 Python
Python Django view 两种return的实现方式
Mar 16 Python
如何理解python对象
Jun 21 Python
python 将html转换为pdf的几种方法
Dec 29 Python
Python干货实战之八音符酱小游戏全过程详解
Oct 24 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
smarty缓存用法分析
2014/12/16 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
phpStudy访问速度慢和启动失败的解决办法
2015/11/19 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
javascript flash下fromCharCode和charCodeAt方法使用说明
2008/01/12 Javascript
20个非常有用的PHP类库 加速php开发
2010/01/15 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
JavaScript Array对象详解
2016/03/01 Javascript
JavaScript算法系列之快速排序(Quicksort)算法实例详解
2016/09/04 Javascript
浅谈jQuery双事件多重加载的问题
2016/10/05 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
JavaScript中的遍历详解(多种遍历)
2017/04/07 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
iview中Select 选择器多选校验方法
2018/03/15 Javascript
vue 中swiper的使用教程
2018/05/22 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
Python实现繁?转为简体的方法示例
2018/12/18 Python
Python单元和文档测试实例详解
2019/04/11 Python
python变量命名的7条建议
2019/07/04 Python
Python PO设计模式的具体使用
2019/08/16 Python
tensorflow安装成功import tensorflow 出现问题
2020/04/16 Python
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
RIP版本1跟版本2的区别
2013/12/30 面试题
高中生的自我鉴定范文
2014/01/24 职场文书
万年牢教学反思
2014/02/15 职场文书
入党积极分子评语
2014/05/04 职场文书
外国人来华邀请函
2015/01/31 职场文书
2016大学生社会实践心得体会范文
2016/01/14 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
选购到合适的激光打印机
2022/04/21 数码科技
解决ubuntu安装软件时,status-code=409报错的问题
2022/12/24 Servers