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 04 Python
python3 shelve模块的详解
Jul 08 Python
python使用opencv读取图片的实例
Aug 17 Python
Python登录并获取CSDN博客所有文章列表代码实例
Dec 28 Python
Python线性回归实战分析
Feb 01 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
Python制作exe文件简单流程
Jan 24 Python
Django项目中使用JWT的实现代码
Nov 04 Python
使用 Python 清理收藏夹里已失效的网站
Dec 03 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
Python max函数中key的用法及原理解析
Jun 26 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
Protoss兵种介绍
2020/03/14 星际争霸
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
php中simplexml_load_file函数用法实例
2014/11/12 PHP
php使用preg_match()函数验证ip地址的方法
2017/01/07 PHP
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
jquery实现鼠标滑过显示二级下拉菜单效果
2015/08/24 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JS实现数组去重复值的方法示例
2017/02/18 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
Vue 2.0 侦听器 watch属性代码详解
2019/06/19 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
[01:21:07]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
python编写Logistic逻辑回归
2020/12/30 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
Python3 ID3决策树判断申请贷款是否成功的实现代码
2020/05/21 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
Scrapy中如何向Spider传入参数的方法实现
2020/09/28 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
Python 虚拟环境工作原理解析
2020/12/24 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
HTML5实现移动端点击翻牌功能
2020/10/23 HTML / CSS
世界上最大的隐形眼镜商店:1-800 Contacts
2018/11/03 全球购物
迟到检讨书大全
2014/01/25 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server