周四听到同学写了个用Python模拟Fetion给别人发送天气预报的程序,然后果断把代码要过来看了看,发现少了一个他自己写的一个模块,恰恰就是如何登录飞信和发送信息的模块。除了这个模块的代码外,其他的代码很简单易懂,然后自己写想写个类似的东东,但是咱不会模拟登录飞信啊,就去GG找到了一个可以登录人人的代码,移动公司还算挺照顾的,还开发了个Web版Fetion,那就从这入手,当晚半小时不到搞定了如何登录飞信的问题。
其实网上有很多关于这种的代码,用各种语言写的,PHP,C#,Java啊,自己想写个主要是学习Python也有一段时间了,接触了Twisted,sqlalchmey,exilir等Python的秘密武器。所以就果断想找个东西来实战一下,这不机会来了。
下面介绍下主要用到的Python包:
1、urllib和urllib2:这两个包就不解释了,用来连接网络的。
2、sqlalchemy:这个包挺强大的,对几乎现在所有主流的数据库都进行了封装,屏蔽了个数据库SQL语句语法的不同而带来的障碍,有了它你只要会数据库课上学的那些就可以了,其他的就sqlalchmey帮你搞定,不用自己写sql语句了。
3、exilir:这个包的名字很文艺,翻译过来叫“仙草”,用它的原因还是为了偷懒,虽然有了sqlalchemy,但是不想自己写ORM,所以就用exilir来省事。
4、BeautifulSoup:“美味的汤”,用来解析HTML源码的,没有具体看,功能还是很不错的。
数据库还是为了省事就用Python的sqlite。
开发环境:Eclipse Pydev + Python 2.7
一切准备就绪,就开始写了。
先说说写的过程中主要遇到的问题:
我总共写了算3个版本吧:
第一个版本:没有用数据库,直接读文件,存文件,太easy了,这样什么问题都没有遇到,直接一次性搞定,Happy
第二个版本:用了数据库,本来咱就是要实战怎么使用数据库包的嘛,这里就遇到了下面要提到的各种问题
第三个版本:就是把第二版的代码优化了下,看起来更好看点,对数据库的插入和删除操作放到另外一个界面去了,添加了些对数据库操作的代码
问题:
1、最头疼的问题——编码问题,最初的时间怎么都不能往数据库中Insert入中文,最后发现问题是自己的IDE默认的编码不是UTF-8而是GBK,坑爹啊,这里花了有2个小时才解决
2、飞信发送信息居然不是用飞信号来确定用户的,飞信还有个不为人知的字段叫userId,就是这个东东来确定通信的用户,导致的问题就是怎么发都不能把信息发送过去
3、这两天被加了40多个好友,都尼玛不认识,估计是登录飞信代码的问题,肯定是很不安去了,但是自己用无所谓啦,飞信也没啥咱私密信息
4、昨天从网上看到一个很强大的登录飞信代码,可惜的不是看不懂代码,是拿过来不能用,应该是飞信的版本变了,它的东西过时了,需要修改代码
5、刚刚晚上有发现一个问题,居然往IDE输入的中文用utf-8编码存到数据库,但是从数据库拿出来的时候不能用gbk强制编码,也就是说utf-8编码的时候就出现了非法字符,太囧了,完全解决不了,比如:“杭州”存到数据库后就取不出来了
最后历时9个小时吧,从最初的写登录人人网到现在基本完成的版本,最主要的时间还是花在解决编码问题上了,code时间不算太长,由于之前没有写对数据库更新和删除的代码,每次更改代码都需要删除之前的数据库重新再建数据库,这里也花了些时间。
总体来说还算满意吧,达到了预定的目标,如果还要改进的话,就需要更优秀的登录飞信模块的代码,可惜咱真的不会。
今天就到这吧,下午有事,代码等晚上回来再贴出来。
下面的文章写的比较简单吧,因为本来就很简单的东东,就直接贴出代码了。