最近深感python重要,加之raspberry上也需要,关键是能全力地解决问题而不是把时间耗散在实现的细节上,对于完成模型什么的还是非常牛的,于是先写一个模拟登陆来练练手。一开始就挑软柿子捏吧,选了学校的选课网站。无验证码。准备下一次挑个有验证码的玩玩
先把重要的技巧写出来吧,我的的是python3.4,最新版,各种碰壁各种坑,但索性一个个克服过来了,
首先推荐的是http://www.crifan.com/note_about_website_crawl_and_emulate_login/ 这位大神的文章,各种模拟登陆的技巧啊哈哈,本人也受益良多。以下有些部分也是重复的,不过都是自己实际碰上的坑,而且是python3.4版本的,所以还是写下来作为记录
一、辅助工具:wireshark:过滤器那里调到http,然后关闭其他无关的浏览器等等程序,然后再跑python程序,就能很舒服地对python发出的数据包进行查看了哦!当然也可以用Fiddler这个程序,不过urlopen请求的时候要设置代理
2、Fiirebug,调试JS,查看数据包,审查元素什么的都不在话下。不过不能查看python发送的数据包,所以还是需要wireshark配合
二、IDE 推荐Pycharm,知乎上好多人推荐那我也用这个鸟
三、python3对于python2 的改动非常多,而网络上现有的代码大多是基于python2的,所以做好改错的心理准别。如果不想把时间浪费在上面那么就建议直接使用python2,.7版本。其实不能向下兼容真的是一大败笔,尽管设计更加科学了,最大的改动无疑就是urllib模块了,以前杂乱无章的层次被改成了现在的urllib.parser urllib.request 比如urllib.request.urlopen这样的,cookie模块变成了 http.cookiejar ,具体的查看下方源码吧。
五、编码问题:
首先是总结一下对于编码的做法:python内部用的是unicode,而如果要向外输出,那就需要编码(encode),比如UTF8 UTF16 GBK这类的,如果输入(比如从网络上抓取的网页,比如文件的读取),就需要解码成unicode,然后才能愉快的在python里头显示出各种字符,否则UTF8没有经过解码,直接print,如果英文还算正常,中文的话就会出现\xab\x21\x5b 这样的十六进制表示(三组一个汉字)。于是总结出的通用处理方法就是,输入时候统一解码成unicode,输出时候再统一编码成需要的编码
编码还算是挺容易的&#