天天看点

Python模拟新浪微博登录代码Python模块

下面的代码是来自上面这篇文章,并稍作修改添加了一些注释。

以上代码引入了一些python的模块,然后创建了一个class封装了login方法。

以上代码的登录逻辑:

1、进入到登陆页面,获取一些关键参数,包括随机数rand、password的name和vk。

2、模拟提交登陆,登陆之后跳到微薄页面。

3、手动跳转到微薄页面。

总结:

以上代码是模拟手机版微博的登陆,如果你想模拟登陆网页版的微博,你可以参考下面两个项目中的代码:

<a href="https://github.com/chineking/cola/blob/master/contrib/weibo/login.py" target="_blank">cola</a>

<a href="https://github.com/cnpameng/weibomsgbackupgui/blob/master/sina/loginsinacom.py" target="_blank">weibomsgbackupgui</a>

## python urllib模块

python urllib模块提供了一个从指定的url地址获取网页数据,然后对其进行分析处理,获取想要的数据。

1、urllib模块提供的urlopen函数

urllib.urlopen创建一个类文件对象为指定的url来读取:

参数url表示远程数据的路径,一般是http或者ftp路径。

参数data表示以get或者post方式提交到url的数据。

参数proxies表示用于代理的设置。

示例:

urlopen返回一个类文件对象,它提供了如下方法:

1)read() , readline() , readlines(),fileno()和close(): 这些方法的使用与文件对象完全一样。

2)info():返回一个httplib.httpmessage 对象,表示远程服务器返回的头信息。

3)getcode():返回http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。

4)geturl():返回请求的url地址。

2.urllibe模块提供的urlretrieve函数。

urlretrieve方法直接将远程数据下载到本地。

参数finename指定了保存本地路径(如果参数未指定,urllib会生成一个临时文件保存数据。)

参数reporthook是一个回调函数,当连接上服务器、以及相应的数据块传输完毕时会触发该回调,我们可以利用这个回调函数来显示当前的下载进度。

参数data指post到服务器的数据,该方法返回一个包含两个元素的(filename, headers)元组,filename表示保存到本地的路径,header表示服务器的响应头。

示例:urlretrieve方法下载文件实例,可以显示下载进度。

3.辅助方法

urllib中还提供了一些辅助方法,用于对url进行编码、解码。

urllib.quote(string[, safe]):对字符串进行编码。参数safe指定了不需要编码的字符;

urllib.unquote(string) :对字符串进行解码;

urllib.quote_plus(string [ , safe ] ) :与urllib.quote类似,但这个方法用’+’来替换’ ‘,而quote用’%20’来代替’ ‘

urllib.unquote_plus(string ) :对字符串进行解码;

urllib.urlencode(query[, doseq]):将dict或者包含两个元素的元组列表转换成url参数。例如 字典{‘name’: ‘dark-bull’, ‘age’: 200}将被转换为”name=dark-bull&amp;age=200”

urllib.pathname2url(path):将本地路径转换成url路径;

urllib.url2pathname(path):将url路径转换成本地路径;

通过上面的练习可以知道,urlopen可以轻松获取远端html页面信息,然后通过python正则对所需要的数据进行分析,匹配出想要用的数据,在利用urlretrieve将数据下载到本地。对于访问受限或者对连接数有限制的远程url地址可以采用proxies(代理的方式)连接,如果远程数据量过大,单线程下载太慢的话可以采用多线程下载,这个就是传说中的爬虫。

客户端与服务器端通过request与response来沟通,客户端先向服务端发送request,然后接收服务端返回的response

urllib2提供了request的类,可以让用户在发送请求前先构造一个request的对象,然后通过urllib2.urlopen方法来发送请求

cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问internet资源。例如可以利用本模块的cookiejar类的对象来捕获cookie并在后续连接请求时重新发送。coiokielib模块用到的对象主要有下面几个:cookiejar、filecookiejar、mozillacookiejar、lwpcookiejar。

cookiejar管理http cookie值、存储http请求生成的cookie、向传出的http请求添加cookie的对象。整个cookie都存储在内存中,对cookiejar实例进行垃圾回收后cookie也将丢失。

filecookiejar检索cookie信息并将cookie存储到文件中。filename是存储cookie的文件名。delayload为true时支持延迟访问访问文件,即只有在需要时才读取文件或在文件中存储数据。

mozillacookiejar创建与mozilla浏览器cookies.txt兼容的filecookiejar实例。

lwpcookiejar创建与libwww-perl的set-cookie3文件格式兼容的filecookiejar实例。

cookielib模块一般与urllib2模块配合使用,主要用在urllib2.build_oper()函数中作为urllib2.httpcookieprocessor()的参数。

使用方法如下面登录人人网的代码:

上面python脚本主要是使用了lxml的xpath语法进行快速查找。