想着好好的学习下 Python,只看书当然是不行的,就在网上找一些项目做,想找合适的项目太难的,每个人的情况不一样,对 A 是合适的,对 B 就不一定合适,后来找到 100 project show-me-the-code 这两个 Github 上的 repo,想着自己先做做,等逐渐熟练了之后,再去解决其他的问题。期间问了一个美团公司的工程师有什么可以推荐的不,他建议找自己想解决的问题,我当时想着在桌面写一个美团网自动抽奖的程序,由于自己不熟悉前端,有些地方不懂,问了好几个搞前端的同学,也没搞定。想着干脆先照着前面两个 repo 写,另外写个爬虫,熟悉下。等自己熟悉那个抽奖系统的链接跳转之后,再去搞定它。

下面是我做这些 project 时遇到的一些问题,这里会逐渐更新,所有的代码都放到这个库中

1. 在图片的右上角加一个红色的数字(类似 QQ 消息的信息数目提示),直接用 PIL 库可以解决,不过由于在 windows 确实某个库 _imagingft C,照着网上的安装之后还是不行,不能更改字体,导致添加的数字字体太小。另外应该可以用 PyQt 或者 Opencv来解决。

2. 生成一个定长的随机字符串:这个学到了好几种方法,个人觉得较好的是 a)跑 for 循环,每次生成一个字符; b) 用 random.sample ;c)用 random.shuffle。写这个的时候,以及其他一些东西的时候,自己还是用 c/c++ 的思想在写 python,另外一个比较明显的例子是交换两个数,这个要慢慢改过来。

至于用生成的随机字符串生成验证码,也可以用 PIL 库解决,将字符串画到图片上,再在图片上画一些黑点/黑线,然后对图片进行扭曲操作,不过不要操作过头了,导致用户都不认识。

3. 找出 html 文件中的正文,链接,或者下载某个页面中的所有图片。自己用的正则表达式处理,正文直接匹配的 ,这里中间用 “[\s\S]”表示所有字符,不用通配符 ,是因为会有换行等特殊字符在里面;链接用的是 href=\”[^\”]\”, 至于下载某个页面中的所有图片,首先利用正则表达式 src=\”http[^\”]*jpg\”(这里需要考虑多种图片格式),找出所有图片的 url,然后用urllib.urlretrieve() 函数将远程的图片下载到本地。

4. 对密码进行加密,直接用 hashlib 库就行了,可以用不同的加密函数,至于加密密码的时候,需要添加 salt,salt可以由用户提供,也可以用 uuid 生成一个随机的字符串,最后把 salt 添加到 hash 后的密码后面,为了后面验证需要。

未完待续…

Comments