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爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
python读取视频流提取视频帧的两种方法
Oct 22 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
让Django支持Sql Server作后端数据库的方法
May 29 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python3 使用cookiejar管理cookie的方法
Dec 28 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
Python读取csv文件实例解析
Dec 30 Python
Python开发之基于模板匹配的信用卡数字识别功能
Jan 13 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
Python验证码截取识别代码实例
May 16 Python
python语言time库和datetime库基本使用详解
Dec 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
zf框架的session会话周期及次数限制使用示例
2014/03/13 PHP
php实现两个数组相加的方法
2015/02/17 PHP
ThinkPHP 模板substr的截取字符串函数详解
2017/01/09 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
2021/03/09 PHP
小议Function.apply()之二------利用Apply的参数数组化来提高 JavaScript程序性能
2006/11/30 Javascript
HTML复选框和单选框 checkbox和radio事件介绍
2012/12/12 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
JS 数字转换为大写金额的简单实例
2016/08/04 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
jquery事件绑定解绑机制源码解析
2016/09/19 Javascript
AngularJS ng-template寄宿方式用法分析
2016/11/07 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
浅谈Vue组件及组件的注册方法
2018/08/24 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
解决element ui select下拉框不回显数据问题的解决
2019/02/20 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
[40:55]Liquid vs LGD 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 正则表达式操作指南
2009/05/04 Python
Python新手入门最容易犯的错误总结
2017/04/24 Python
python3 读写文件换行符的方法
2018/04/09 Python
python实现年会抽奖程序
2019/01/22 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python通过递归函数输出嵌套列表元素
2020/10/15 Python
Python getsizeof()和getsize()区分详解
2020/11/20 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
美国瑜伽品牌:Gaiam
2017/10/31 全球购物
化学系大学生自荐信范文
2014/03/01 职场文书
三好学生演讲稿范文
2014/04/26 职场文书
关于环保的建议书
2014/05/12 职场文书
高中生打架检讨书1000字
2015/02/17 职场文书
当幸福来敲门观后感
2015/06/01 职场文书
获奖感言范文
2015/07/31 职场文书
vue 自定义组件添加原生事件
2022/04/21 Vue.js