打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
python cookielib登陆网站

python cookielib登陆网站

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

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

  利用 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(c j))

  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">马上注册</a></td>

  <td>密码</td>

  <td><input class="input" type="password" maxLength="20" name="pwpwd" size="40" tabindex="2" /> <a href="sendpwd.php" target="_blank">找回密码</a></td>

  ...

  </form>

  从这里可以看出,我们需要输入的用户名密码对应的就是 pwuser 和 pwpwd,而 step 对应的则是登陆(这个是尝试出来的)。

  注意到,这个论坛表单采用的是 post 方式,如果是 get 方式则本文的方法就需要变动一下,不能直接 open,而是应该首先 Request,然后再 open。更详细的请看手册...
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
认识爬虫:提取网站 cookie 信息,并使用 cookie 信息实现登录
python httplib2与urllib2包的介绍(转)
yanzhengma
零基础写python爬虫之爬虫编写全记录
Python爬虫:一些常用的爬虫技巧总结
python http请求及cookie的模拟
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服