这里有新鲜出炉的 Python 教程,程序狗速度看过来!
Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。
这篇文章主要介绍了 Python 登录网站详解及实例的相关资料, 需要的朋友可以参考下
Python 登录网站详解及实例
对于大部分论坛,我们想要抓取其中的帖子分析,首先需要登录,否则无法查看。
这是因为 HTTP 协议是一个无状态 (Stateless) 的协议,服务器如何知道当前请求连接的用户是否已经登录了呢?有两种方式:
Python 提供了相当丰富的模块,所以对于这种网络操作只要几句话就可以完成。我以登录 QZZN 论坛为例,事实上下面的程序几乎所有的 PHPWind 类型的论坛都是适用的。
- # -*- coding: GB2312 -*-
- from urllib import urlencode
- import cookielib, urllib2
- # cookie
- cj = cookielib.LWPCookieJar()
- opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
- urllib2.install_opener(opener)
- # Login
- user_data = {'pwuser': '你的用户名',
- 'pwpwd': '你的密码',
- 'step':'2'
- }
- url_data = urlencode(user_data)
- login_r = opener.open("http://bbs.qzzn.com/login.php", url_data)
一些注释:
最后一个问题是,pwuser、pwpwd 这类的名字是从哪儿来的,这就要分析需要登录的网页了。我们知道,一般的登录界面都是一个表单,节选如下:
- <form action="login.php?" method="post" name="login" onSubmit="this.submit.disabled = true;">
- <input type="hidden" value="" name="forward" />
- <input type="hidden" value="http://bbs.qzzn.com/index.php" name="jumpurl"
- />
- <input type="hidden" value="2" name="step" />
- ...
- <td width="20%" onclick="document.login.pwuser.focus();">
- <input type="radio" name="lgt" value="0" checked />
- 用户名
- <input type="radio" name="lgt" value="1" />
- UID
- </td>
- <td>
- <input class="input" type="text" maxLength="20" name="pwuser" size="40"
- tabindex="1" />
- <a href="reg1ster.php" rel="external nofollow">
- 马上注册
- </a>
- </td>
- <td>
- 密码
- </td>
- <td>
- <input class="input" type="password" maxLength="20" name="pwpwd" size="40"
- tabindex="2" />
- <a href="sendpwd.php" rel="external nofollow" target="_blank">
- 找回密码
- </a>
- </td>
- ...
- </form>
从这里可以看出,我们需要输入的用户名密码对应的就是 pwuser 和 pwpwd,而 step 对应的则是登录(这个是尝试出来的)。
注意到,这个论坛表单采用的是 post 方式,如果是 get 方式则本文的方法就需要变动一下,不能直接 open,而是应该首先 Request,然后再 open。更详细的请看手册...
来源: http://www.phperz.com/article/17/0428/333824.html