Twisted和Reactor模式

因为项目关系,接触学习了大名鼎鼎的Python网络编程框架Twised,Twisted是以高性能为目标的异步(event-driven)网络编程框架。

Twisted book

Twisted book

图中是Twisted官方推荐的学习书籍的封面,我觉得封面设计的非常贴切:Twisted就是很多Python(蟒蛇)纠缠在一起。

很多人说Twisted太复杂了,不易于使用,而我并不这么认为。虽然代码流程和朴素的代码流程大相径庭,但复杂性源自于异步编程的思想,而Twisted通过优秀的封装已经极大了减轻了我们的工作量。如果你之前没有接触过异步编程模型,我认为从Twisted入手不失为一个很好的选择。

学习Twisted的最好方式就是阅读Twisted的最新官方指南,有详尽的解释和代码示例,网络上其他的教程都是浪费时间(包括本文,前提是如果本文算得上是教程的话…)。

继续阅读:

APUE杂记:解释器文件

一个非常常见的Python脚本如下:

一直以来从来没考虑过为什么在脚本的第一行要写上 #!/usr/bin/env python 这样的注释,通常的解释是这样写就知道用什么来解释这个文件了,但是也没有深究为什么。其实这是一个Unix解释器文件的写法。

继续阅读:

使用python模拟weibo登录

之前写过在python中使用weibo API的方法,见这里,但是因为weibo API有频率限制,不够目前需求使用,所以通过爬虫模拟登录weibo进行直接抓取还是很有必要的,第一步要做的事情就是模拟登录过程。

weibo的登录方法一直在变,不知道现在的方法还能使用多久。
目前登录使用的是RSA加密的方式,总体来看步骤分为三步:

  1. 访问预登录地址,获取servertime、nonce和RSA公钥
  2. 访问认证地址,发送编码后的用户名和RSA加密过的密码,获得跳转地址
  3. 访问获得的地址,获取到登录cookie,登录完成

继续阅读:

通过python SDK使用weibo API

之前做JAVA课大作业的时候曾经用过weibo的API,weibo的API采用OAuth2的认证方法进行认证,也就是避免开发者知晓用户密码的一种手段。不过这样对于开发一些简单使用的客户端程序就不太友好了,可以通过程序模拟授权过程来跳过这一步骤。之前是用JAVA做的,现在用Python再做一次…

继续阅读: