在web开发中经常用到验证码,为了防止机器人注册或者恶意登陆和查询等,作用不容小觑但是验证码其实不是一个函数就能搞定的,它需要生成图片和水印,其实每种语言都有相关的函数生成图片和文字水印。包括我熟悉的php,呵呵,今天主要来分享如何用python生成验证码。python生成验证码主要用到如下模块:Image,ImageDraw,ImageFont,ImageFilter和随机数生成模块Random。代码如下:#!/usr/bin/envpython#cod
系统 2019-09-27 17:48:19 1674
几乎所有的微薄都提供了缩短网址的服务,其原理就是将一个url地址按照一定的算法生成一段字符串,然后加在一个短域名后面边成了一个新的url地址,数据库中会存放这个短地址和原始的地址,当用户点击这个新的短地址后,短地址服务会根据短域名后面的几个字符串从数据库中读出原来的地址然后页面进行跳转。比如新浪微薄中的url是http://t.cn/xxxxxxxt.cn是其域名,其后面跟着的是7位算出来的字符串。方法一:使用哈希库自定义算法因为文本中显示太长的url会比
系统 2019-09-27 17:48:18 1674
问题提出:有时候我们采集网页,处理完毕后将字符串保存到文件或者写入数据库,这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数据库是utf-8的,这样不做任何处理直接插入数据库可能会乱码(没测试过,不知道数据库会不会自动转码),我们需要手动将gb2312转换成utf-8。首先我们知道,python里的字符默认是ascii码,英文当然没问题啦,碰到中文的时候立马给跪。不知道你还记不记得,python里打印中文汉字的时候需要在字符串前面加u
系统 2019-09-27 17:48:17 1674
通用视图1.前言回想一下,在Django中view层起到的作用是相当于controller的角色,在view中实施的动作,一般是取得请求参数,再从model中得到数据,再通过数据创建模板,返回相应响应对象。但在一些比较通用的功能中,比如显示对象列表,显示某对象信息,如果反复写这么多流程的代码,也是一件浪费时间的事,在这里,Django同样给我们提供了类似的"shortcut"捷径--通用视图。2.使用通用视图使用通用视图的方法就是在urls.py这个路径配
系统 2019-09-27 17:48:15 1674
matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图。而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中。它的文档相当完备,并且Gallery页面中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。这篇我们用matplotlib从构造最简单的bar一步一步向复杂的bar前行。什么是最简单的bar,看如下语句你就知
系统 2019-09-27 17:48:15 1674
类与类的关系依赖关系#依赖关系:将一个类的类名或者对象传给另一个类的方法中.classElephant:def__init__(self,name):self.name=namedefopen(self,r1):#print(ref1)print(f'{self.name}默念三声:芝麻开门')r1.open_door()defclose(self):print('大象默念三声:芝麻关门')classRefrigerator:def__init__(sel
系统 2019-09-27 17:48:13 1674
URL提交是百度提供的一个站长工具,用于给站长提供手工收录某些URL的接口,但是该接口有验证码识别部分,比较难弄。所以编写了如下程序进行验证码自动识别:主要思路获取多个验证码,提交到http://lab.ocrking.com/进行多次识别,然后计算每个验证码图片识别出来的字母或数字进行统计,得出统计率最高的即为验证码。复制代码代码如下:#!/usr/bin/envpython#-*-coding:utf-8-*-importrequestsimportt
系统 2019-09-27 17:48:10 1674
并发与锁a.多个线程共享数据的时候,如果数据不进行保护,那么可能出现数据不一致现象,使用锁,信号量、条件锁b.c.互斥锁1.互斥锁,是使用一把锁把代码保护起来,以牺牲性能换取代码的安全性,那么Rlock后必须要relase解锁不然将会失去多线程程序的优势2.互斥锁的基本使用规则:1importthreading2#声明互斥锁3lock=threading.Rlock();4defhandle(sid):#功能实现代码5lock.acquire()#加锁6#
系统 2019-09-27 17:48:09 1674
Python中除法那些坑最近刷了一个cf题目,被python中的出发机制坑的不要不要的。这是链接:Chunga-Changapython中//和/的区别与使用a//b会获取值的整数部分,小数部分会丢失a/b会返回完整的值举个栗子:5//2=25/2=2.5那么问题来了?int(a/b)和a//b的区别在哪里呢?例1:int(7/3)=27//3=2既然如此讨论它们意义在上面地方呢?看看例二例二:int(999999999999999997/5)=20000
系统 2019-09-27 17:48:09 1674
有很久没有更新我的博客了,在学习flask去了,别人都说flask不难,其实现在我也这么觉得,但是在刚接触的时候还是有点吃力的。在学习的过程中查阅了不少,也了解了许多,今天想做个总结。。。以免觉得学了那么久什么都没学到,还有防止以后忘记。一.关于装饰器,路由最开始接触的时候觉得好神奇,只会照着敲不知道怎么自己用起来@app.route(‘/')defhello:print(‘hello')注意:1.只有@这个东西是固定的,app是可以换的,这与蓝本中的定义
系统 2019-09-27 17:48:05 1674