Python 登录网站详解及实例

 更新时间:2017年04月11日 15:16:20   投稿:lqh  
这篇文章主要介绍了Python 登录网站详解及实例的相关资料,需要的朋友可以参考下

Python 登录网站详解及实例

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

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

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

  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)

 一些注释:

  • 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="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。更详细的请看手册...

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

相关文章

  • Python巧用SnowNLP实现生成srt字幕文件

    Python巧用SnowNLP实现生成srt字幕文件

    SnowNLP是一个可以方便的处理中文文本内容的python类库,本文主要为大家详细介绍了Python如何巧用SnowNLP实现将一段话一键生成srt字幕文件,感兴趣的可以了解下
    2024-01-01
  • Python 搭建Web站点之Web服务器与Web框架

    Python 搭建Web站点之Web服务器与Web框架

    这篇文章主要介绍了Python 搭建Web站点系列文章的第一篇,主要给大家简单介绍Web服务器与Web框架的相关资料,需要的朋友可以参考下
    2016-11-11
  • python判断是空的实例分享

    python判断是空的实例分享

    在本篇内容里小编给大家整理的是关于python怎么判断是空的相关知识点内容,需要的朋友们学习下。
    2020-07-07
  • Python使用 OpenCV 进行图像投影变换

    Python使用 OpenCV 进行图像投影变换

    这篇文章主要介绍了Python使用 OpenCV 进行图像投影变换,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • Python 返回汉字的汉语拼音

    Python 返回汉字的汉语拼音

    最近做程序用到汉字转汉语拼音的问题,首先想到Google一下,但是拿来看了一下源码,不是甚清楚。
    2009-02-02
  • Python3运算符常见用法分析

    Python3运算符常见用法分析

    这篇文章主要介绍了Python3运算符常见用法,结合实例形式分析了Python3算术运算符、逻辑运算符、比较运算符、位运算符等相关原理与操作技巧,需要的朋友可以参考下
    2020-02-02
  • matplotlib绘制符合论文要求的图片实例(必看篇)

    matplotlib绘制符合论文要求的图片实例(必看篇)

    下面小编就为大家带来一篇matplotlib绘制符合论文要求的图片实例(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 通过源码分析Python中的切片赋值

    通过源码分析Python中的切片赋值

    因为经常取指定索引范围的操作,用循环十分繁琐,因此,Python提供了切片(Slice)操作符,能大大简化这种操作。而下面这篇文章则通过源码给大家分析介绍了Python中切片赋值的相关资料,需要的朋友可以参考学习,下面来一起看看吧。
    2017-05-05
  • python 模拟登陆github的示例

    python 模拟登陆github的示例

    这篇文章主要介绍了python 模拟登陆github的示例代码,帮助大家更好的理解和学习python 爬虫的相关知识,感兴趣的朋友可以了解下
    2020-12-12
  • python基础之文件操作

    python基础之文件操作

    这篇文章主要介绍了python基础之文件操作,文中有非常详细的代码示例,对正在学习python的小伙伴们有一定的帮助,需要的朋友可以参考下
    2021-04-04

最新评论