Python 给字符串进行加密,生成唯一固定长度字符串
背景
有时候爬虫爬过的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把文件和方法引入,就可以使用了
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Python/MySQL时间的实际应用记录
前言 网上关于mysq时间、python时间与时间戳等文章很多,翻来翻去找不到头绪,根据不同博客的写法,挑了几个来测试,这里记录一下。 况且,不以实际需求为前提的博文,就是瞎写,估计以后自己都看不懂。 Mysql 时间类型 在数据库建表的时候,通常有5中字段类型让人选择: TIME、DATE、DATETIME、TIMESTAMP、YEAR,它们又各自是什么格式呢?要写的让自己容易记: TIME类型 :存储空间[3 bytes] - 时间格式[HH:MM:SS] - 时间范围[-838:59:59 到 ~ 838:59:59] DATE类型 :存储空间[3 bytes] - 时间格式[YYYY-MM-DD] - 时间范围[1000-01-01 到 9999-12-31] (可以理解为年月日) DATETIME类型 :存储空间[8 bytes] - 时间格式[YYYY-MM-DD HH:MM:SS] - 时间范围[1000-01-01 00:00:00 到 9999-12-31 23:59:59] (可以理解为年月日时分秒) TIMESTAMP类型 :存储空间[4 bytes] - 时间格...
- 下一篇
探索 JS 中的模块化
偶然的一个周末复习了一下 JS 的模块标准,刷新了一下对 JS 模块化的理解。 从开始 Coding 以来,总会周期性地突发奇想进行 Code Review。既是对一段时期的代码进行总结,也是对那一段时光的怀念。 距离上一次 Review 已经过去近两个月,这次竟然把两年前在源续写的代码翻了出来,代码杂乱无章的程度就像那时更加浮躁的自己,让人感慨时光流逝之快。 话不多说,直接上码。 当时在做的是一个境外电商项目(越南天宝商城),作为非 CS 的新手程序员,接触 Coding 时间不长和工程化观念不强,在当时的项目中出现了这样的代码: import.js: 这段代码看起来就是不断地从 DOM 中插进 CSS 和 JS,虽然写得很烂,但是很能反映以前的 Web 开发方式。 在 Web 开发中,有一个原则叫“关注点分离(separation of concerns)“,意思是各种技术只负责自己的领域,不互相耦合混合在一起,所以催生出了 HTML、CSS 和 JavaScript。 其中,在 Web 中负责逻辑和交互 的 JavaScript,是一门只用 10 天设计出来的语言,虽然借鉴了许多...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- CentOS7设置SWAP分区,小内存服务器的救世主
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品