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查询Mysql时返回字典结构的代码
Jun 18 Python
python学生管理系统代码实现
Apr 05 Python
django项目搭建与Session使用详解
Oct 10 Python
Python微医挂号网医生数据抓取
Jan 24 Python
Python3实现的判断回文链表算法示例
Mar 08 Python
对python 中class与变量的使用方法详解
Jun 26 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Numpy将二维数组添加到空数组的实现
Dec 05 Python
Python使用OpenPyXL处理Excel表格
Jul 02 Python
keras实现VGG16 CIFAR10数据集方式
Jul 07 Python
pycharm2020.2 配置使用的方法详解
Sep 16 Python
通过Python pyecharts输出保存图片代码实例
Nov 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版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
基于php中echo用逗号和用点号的区别详解
2018/01/23 PHP
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
javascript模拟枚举的简单实例
2014/03/06 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
让html页面不缓存js的实现方法
2014/10/31 Javascript
node.js中的require使用详解
2014/12/15 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
angular 服务的单例模式(依赖注入模式下)详解
2018/10/22 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
详解js location.href和window.open的几种用法和区别
2019/12/02 Javascript
vue使用video插件vue-video-player的示例
2020/10/03 Javascript
Python实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
2014/06/04 Python
Python多进程编程技术实例分析
2014/09/16 Python
在Python中使用mechanize模块模拟浏览器功能
2015/05/05 Python
Python sys.argv用法实例
2015/05/28 Python
如何使用七牛Python SDK写一个同步脚本及使用教程
2015/08/23 Python
python编程线性回归代码示例
2017/12/07 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
caffe binaryproto 与 npy相互转换的实例讲解
2018/07/09 Python
python 递归深度优先搜索与广度优先搜索算法模拟实现
2018/10/22 Python
python制作朋友圈九宫格图片
2019/11/03 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
Python3 webservice接口测试代码详解
2020/06/23 Python
Hotels.com韩国:海外国内旅行所需的酒店和住宿预订网站
2020/05/08 全球购物
新三好学生主要事迹
2014/01/23 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
2015年银行工作总结范文
2015/04/01 职场文书
警告通知
2015/04/25 职场文书
代理词怎么写
2015/05/25 职场文书
趣味运动会标语口号
2015/12/26 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
Spring Boot 实现 WebSocket
2022/04/30 Java/Android