本文作者:佚名

Python 登录网站详解及实例

佚名 2019-04-21 ???
摘要:Python 登录网站详解及实例对于大部分论坛,我们想要抓取其中的帖子分析,首先需要登录,否则无法查看。  这是因为 HTTP 协议


Python 登录网站详解及实例

对于大部分论坛,我们想要抓取其中的帖子分析,首先需要登录,否则无法查看。

  这是因为 HTTP 协议是一个无状态(Stateless)的协议,服务器如何知道当前请求连接的用户是否已经登录了呢?有两种方式:

  1. 在URI 中显式地使用 Session ID;
  2. 利用 cookie,大概过程是登录一个网站后会在本地保留一个 cookie,当继续浏览这个网站的时候,浏览器会把 cookie 连同地址请求一起发送过去。

  python 提供了相当丰富的模块,所以对于这种网络操作只要几句话就可以完成。我以登录 QZZN 论坛为例,事实上下面的程序几乎所有的 phpwind 类型的论坛都是适用的。

# -*- coding: GB2312 -*-from urllib import urlencodeimport cookielib, urllib2# cookiecj = cookielib.LWPcookieJar()opener = urllib2.build_opener(urllib2.HTTPcookieProcessor(cj))urllib2.install_opener(opener)# Loginuser_data = {
'pwuser': '你的用户名',       'pwpwd': '你的密码',       'step':'2'      }
url_data = urlencode(user_data)login_r = opener.open(" url_data)

 一些注释:

  • urllib2 显然是比 urllib 高级一点的模块,里面包括了如何使用 cookies。
  • 在 urllib2 中,每个客户端可以用一个 opener 来抽象,每个 opener 又可以增加多个 handler 来增强其功能。
  • 在构造 opener 时指定了 HTTPcookieProcessor 做为 handler,因此这个 handler 支持 cookie。
  • 使用 isntall_opener 后,调用 urlopen 时会使用这个 opener。
  • 如果不需要保存 cookie,cj 这个参数可以省略。
  • user_data 存放的就是登录所需要的信息,在登录论坛的时候把这个信息传递过去就行了。
  • urlencode 功能是把字典 user_data 编码成"?pwuser=username&pwpwd=password"的形式,这样做是为了使程序易读一些。

  最后一个问题是,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=" 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  type="text" maxLength="20" name="pwuser" size="40" tabindex="1" /> <a href="reg1ster.php" rel="external nofollow" >马上注册</a></td> <td>密 码</td> <td><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。更详细的请看手册...

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

您可能感兴趣的文章:

  • Python(Tornado)模拟登录小米抢手机
  • 用Python实现web端用户登录和注册功能的教程
  • Python实现模拟登录及表单提交的方法
  • python实现网站的模拟登录
  • 使用Python中的cookielib模拟登录网站
  • python实现用户登录系统
  • python使用tornado实现登录和登出

未经允许不得转载:

作者:佚名,标题:Python 登录网站详解及实例,原文地址:https://www.vfjianzhan.com/python/21885.html发布于2019-04-21
转载或复制请以超链接形式并注明出处唯福建站

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏