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自动化测试之setUp与tearDown实例
Sep 28 Python
Python分支结构(switch)操作简介
Jan 17 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
详谈在flask中使用jsonify和json.dumps的区别
Mar 26 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
python实现排序算法解析
Sep 08 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
python读取xlsx的方法
Dec 25 Python
python实现车牌识别的示例代码
Aug 05 Python
jupyter notebook清除输出方式
Apr 10 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
Jul 21 Python
python flask框架快速入门
May 14 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 base64+gzinflate压缩编码和解码代码
2008/10/03 PHP
php截取字符串之截取utf8或gbk编码的中英文字符串示例
2014/03/12 PHP
thinkphp文件引用与分支结构用法实例
2014/11/26 PHP
php站内搜索关键词变亮的实现方法
2014/12/30 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
JavaScript中Cookie操作实例
2015/01/09 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
js实现YouKu的漂亮搜索框效果
2015/08/19 Javascript
谈一谈bootstrap响应式布局
2016/05/23 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
使用json来定义函数,在里面可以定义多个函数的实现方法
2016/10/28 Javascript
AngularJS使用ng-repeat和ng-if实现数据的删选显示效果示例【适用于表单数据的显示】
2016/12/13 Javascript
Vue.js双向绑定实现原理详解
2016/12/22 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
在ironpython中利用装饰器执行SQL操作的例子
2015/05/02 Python
Python处理文本文件中控制字符的方法
2017/02/07 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
Python使用python-docx读写word文档
2019/08/26 Python
用python写测试数据文件过程解析
2019/09/25 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
python爬虫用scrapy获取影片的实例分析
2020/11/23 Python
网购亚洲时装、美容产品和生活百货:YesStyle
2016/09/15 全球购物
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
下列程序在32位linux或unix中的结果是什么
2015/01/26 面试题
大二自我鉴定
2014/01/31 职场文书
物业管理专业求职信
2014/06/11 职场文书
个人授权委托书格式
2014/08/30 职场文书
上课不认真检讨书
2014/09/17 职场文书