使用python的cookielib加载已保存的cookie维持登录状态

news/2024/7/19 8:38:25 标签: python, 爬虫

初学网络爬虫,参考

http://cuiqingcai.com/968.html以 及 http://blog.csdn.net/pleasecallmewhy/article/details/8923067

登录我自己学校的时候会遇到验证码的阻碍,比较简单的一个方法是绕过验证码,先手动登录一次,然后使用cookie保持登录状态。

可是这个登录的cookie怎么获得呢,在firefox中cookie是打包在一个文件中的,在ie中我居然找不到教务处网站的cookie……

文件找不到,但是这个cookie的value是可以找到的,通过fiddler或者HttpFox都可以, 然后我尝试了如http://tieba.baidu.com/p/3272054397提到的

For ck in cj :
  Ck.name='new name'
  Ck.value='new value'
  Cj.set_cookie(ck)
也无法正确添加,print了一下cookie,结果还是空白的。
 
官方文档的说明也很简单
所以还是采用http://cuiqingcai.com/968.html 里提到的,使用
cookie = cookielib.MozillaCookieJar(filename)     ------->这里用到了MozillaCookieJar,和之前的CookieJar不一样哦
创建cookie,然后使用相关的save, load方法保存和加载cookie

因为要cookie要使用手动填写了验证码的,所以这里的save就是提供个模板,(这里输出response.read()应该会看到“登录已过期请重新登录”这样的字眼)
 1 import cookielib
 2 import urllib2
 3  
 4 #设置保存cookie的文件,同级目录下的cookie.txt
 5 filename = 'cookie.txt'
 6 #声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件
 7 cookie = cookielib.MozillaCookieJar(filename)
 8 #利用urllib2库的HTTPCookieProcessor对象来创建cookie处理器
 9 handler = urllib2.HTTPCookieProcessor(cookie)
10 #通过handler来构建opener
11 opener = urllib2.build_opener(handler)
12 #创建一个请求,原理同urllib2的urlopen
13 response = opener.open("登录后重定向的网址")
14 #保存cookie到文件
15 cookie.save(ignore_discard=True, ignore_expires=True)

打开这个保存的cookie,我的长这样

# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file!  Do not edit.

202.118.31.197    FALSE    /    FALSE        JSESSIONID    XFca9XUKVdIUyRz1xKSPvSK1kL0gHjcKHQkW6rs3MMyYwqV3rOja!1269920556

当然这个value值是不对的,如果对了就能登录了。。。

而正确的cookie如果用Flidder的工具查看就是

打个比方 Cookie: JSESSIONID=XFca9XUKVdIUyRz1xKasdasd0gHjcKHQkW6rs3MMyYwqV3rOja!1269920556

所以我们也就知道了要更改那些部分……

把正确的value填入以后再

 1 import cookielib
 2 import urllib2
 3  
 4 #创建MozillaCookieJar实例对象
 5 cookie = cookielib.MozillaCookieJar()
 6 #从文件中读取cookie内容到变量
 7 cookie.load('cookie.txt', ignore_discard=True, ignore_expires=True)
 8 #创建请求的request
 9 req = urllib2.Request("http://www.baidu.com")
10 #利用urllib2的build_opener方法创建一个opener
11 opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))
12 response = opener.open(req)
13 print response.read()

o(︶︿︶)o 终于登录成功了,,,撒花,接下来就是用正则表达式处理一下html页面

转载于:https://www.cnblogs.com/autoria/p/5526762.html


http://www.niftyadmin.cn/n/1191644.html

相关文章

前嗅ForeSpider中数据采集界面介绍

今天,小编为介绍一下,前嗅ForeSpider中数据采集界面里:运行设置,IP代理设置,验证码设置,这三大设置的界面,具体内容如下: 一,运行设置 数据采集前的运行设置,…

vue踩坑记录之:手机端查看vue项目与 listen EADDRNOTAVAIL报错

百度真的是万能的,对于我这种小菜鸟来说,真的是必不可少,这不我前天想在手机端查看vue项目,就遇到了一个问题,都告诉我们要把localhost改成本机的ip,然后保持手机和电脑在同一个网段中,可就是出…

C#微信登录-手机网站APP应用

要求:公众号必须先认证,认证费用¥300/年,比较黑 一、微信登录核心代码 //核心代码,没判断异常 1、登录页面 protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){string appid "wx86d123456…

前嗅ForeSpider中数据浏览界面介绍

今天,小编为大家介绍一下,前嗅ForeSpider中数据浏览界面,具体内容如下: 在“数据采集”页面开始采集后,可以在“数据浏览”页面点对应的数据表,点击“刷新”按钮,即可实时查看采集到的数据。 【…

MongoDB

安装教程踩着坑,终于安装好了。1、下载,安装。 安装教程很多,推荐:安装教程链接 创建db目录:(链接推荐——创建db目录的链接) 2、踩坑点 基本的DOS命令 启动MongoDB(很关键哦&#x…

flume配置

今天老大让我去调研flumekafkahdfs日志收集系统,下午就开始搭建相关的环境了。这里只是简单地介绍flume配置文件相关的,其他关于flume的基础知识请查看其他人的博客(有空我会补上) 首先是安装flume,安装方法可以根据官…

前嗅ForeSpider教程:如何创建新任务

从今天起,小编开始教大家逐步进行可视化配置操作。首先,我们来学习第一步:创建新任务,主要包括创建新任务的操作步骤,操作中的注意事项两部分内容。 一,创建新任务操作步骤: 1.添加新任务 点击任…

Netty+SpringBoot+FastDFS+Html5实现聊天App

NettySpringBootFastDFSHtml5实现聊天App github链接: https://github.com/ShimmerPig... 已将前端代码上传至github,修改app.js中的ip地址后即可使用。 数据库 用户表 face_image为用户的头像,需要保存小图与大图,qrcode为该用户对应的二维码…