python脚本根据cookies自动登录网站_Python爬虫利用cookie实现模拟登陆实例详解

news/2024/5/10 2:11:53/文章来源:https://blog.csdn.net/weixin_39898248/article/details/110041457

Cookie,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密)。

举个例子,某些网站是需要登录后才能得到你想要的信息的,不登陆只能是游客模式,那么我们可以利用Urllib2库保存我们以前登录过的Cookie,之后载入cookie获取我们想要的页面,然后再进行抓取。理解cookie主要是为我们快捷模拟登录抓取目标网页做出准备。

我之前的帖子中使用过urlopen()这个函数来打开网页进行抓取,这仅仅只是一个简单的Python网页打开器,其参数也仅有urlopen(url,data,timeout),这三个参数对于我们获取目标网页的cookie是远远不够的。这时候我们就要利用到另外一种Opener——CookieJar。

cookielib也是Python进行爬虫的一个重要模块,他能与urllib2相互结合一起爬取想要的内容。该模块的CookieJar类的对象可以捕获cookie并在后续连接请求时重新发送,这样就可以实现我们所需要的模拟登录功能。

这里特别说明一下,cookielib是在py2.7中自带的模块,无需重新安装,想要查看其自带模块可以查看Python目录下的Lib文件夹,里面有所有安装的模块。我一开始没想起来,在pycharm中竟然没有搜到cookielib,使用了快捷安装也报错:Couldn't find index page for 'Cookielib' (maybe misspelled?)

201701121014243.png

之后才想起来是不是自带的就有,没想到去lib文件夹一看还真有,白白浪费半个小时各种瞎折腾~~

下面我们就来介绍一下这个模块,该模块主要的对象有CookieJar、FileCookieJar、MozillaCookieJar、LWPCookieJar。

它们的关系:CookieJar —-派生—->FileCookieJar —-派生—–>MozillaCookieJar和LWPCookieJar 主要用法,我们下面也会讲到。urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()(可以用于让python程序模拟浏览器进行访问,作用你懂得~)函数创建自定义Opener对象。

1、首先我们就来获取一下网站的cookie

例子:

#coding=utf-8

import cookielib

import urllib2

mycookie = cookielib.CookieJar() #声明一个CookieJar的类对象保存cookie(注意CookieJar的大小写问题)

handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2库中的HTTPCookieProcessor来声明一个处理cookie的处理器

opener = urllib2.build_opener(handler) #利用handler来构造opener,opener的用法和urlopen()类似

response = opener.open("http://www.baidu.com") #opener返回的一个应答对象response

for item in my.cookie:

print"name="+item.name

print"value="+item.value

结果:

name=BAIDUID

value=73BD718962A6EA0DAD4CB9578A08FDD0:FG=1

name=BIDUPSID

value=73BD718962A6EA0DAD4CB9578A08FDD0

name=H_PS_PSSID

value=1450_19035_21122_17001_21454_21409_21394_21377_21526_21189_21398

name=PSTM

value=1478834132

name=BDSVRTM

value=0

name=BD_HOME

value=0

这样我们就得到了一个最简单的cookie。

2、将cookie保存到文件

上面我们得到了cookie,下面我们学习如何保存cookie。在这里我们使用它的子类MozillaCookieJar来实现Cookie的保存

例子:

#coding=utf-8

import cookielib

import urllib2

mycookie = cookielib.MozillaCookieJar() #声明一个MozillaCookieJar的类对象保存cookie(注意MozillaCookieJar的大小写问题)

handler = urllib2.HTTPCookieProcessor(mycookie) #利用urllib2库中的HTTPCookieProcessor来声明一个处理cookie的处理器

opener = urllib2.build_opener(handler) #利用handler来构造opener,opener的用法和urlopen()类似

response = opener.open("http://www.baidu.com") #opener返回的一个应答对象response

for item in mycookie:

print"name="+item.name

print"value="+item.value

filename='mycookie.txt'#设定保存的文件名

mycookie.save(filename,ignore_discard=True, ignore_expires=True)

将上面的例子简单变形就可以得到本例,使用了CookieJar的子类MozillaCookiJar,为什么呢?我们将MozillaCookiJar换成CookieJar试试,下面一张图你就能明白:

201701121014254.png

CookieJar是没有保存save属性的~

save()这个方法中:ignore_discard的意思是即使cookies将被丢弃也将它保存下来,ignore_expires的意思是如果在该文件中cookies已经存在,则覆盖原文件写入,在这里,我们将这两个全部设置为True。运行之后,cookies将被保存到cookie.txt文件中,我们查看一下内容:

201701121014255.png

这样我们就成功保存了我们想要的cookie

3、从文件中获取cookie并访问


#coding=utf-8

import urllib2

import cookielib

import urllib

#第一步先给出账户密码网址准备模拟登录

postdata = urllib.urlencode({

'stuid': '1605122162',

'pwd': 'xxxxxxxxx'#密码这里就不泄漏啦,嘿嘿嘿

})

loginUrl = 'http://ids.xidian.edu.cn/authserver/login?service=http%3A%2F%2Fjwxt.xidian.edu.cn%2Fcaslogin.jsp'# 登录教务系统的URL,成绩查询网址

# 第二步模拟登陆并保存登录的cookie

filename = 'cookie.txt' #创建文本保存cookie

mycookie = cookielib.MozillaCookieJar(filename) # 声明一个MozillaCookieJar对象实例来保存cookie,之后写入文件

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(mycookie)) #定义这个opener,对象是cookie

result = opener.open(loginUrl, postdata)

mycookie.save(ignore_discard=True, ignore_expires=True)# 保存cookie到cookie.txt中

# 第三步利用cookie请求访问另一个网址,教务系统总址

gradeUrl = 'http://ids.xidian.edu.cn/authserver/login?service' #只要是帐号密码一样的网址就可以, 请求访问成绩查询网址

result = opener.open(gradeUrl)

print result.read()






创建一个带有cookie的opener,在访问登录的URL时,将登录后的cookie保存下来,然后利用这个cookie来访问其他网址。


核心思想:创建opener,包含了cookie的内容。之后在利用opener时,就会自动使用原先保存的cookie.


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

本文标题: Python爬虫利用cookie实现模拟登陆实例详解

本文地址: http://www.cppcns.com/jiaoben/python/176495.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_838071.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat 逻辑攻击类型:拒绝服务_放在香港服务器上的网站经常被DDOS恶意攻击怎么办?...

常见的DDos攻击方式网络层攻击:比较典型的攻击类型是UDP反射攻击,例如:NTP Flood攻击,这类攻击主要利用大流量拥塞被攻击者的网络带宽,导致被攻击者的业务无法正常响应客户访问。传输层攻击:比较典型的攻击…

linux怎么查看内存溢出,Linux 如何查看内存使用率百分比?_网站服务器运行维护,linux...

如何解决win10系统假死现象_网站服务器运行维护解决win10系统假死现象的方法是:1、按【ctrlaltdel】组合键,打开任务管理器;2、点击左下角的【详细信息】;3、切换到【进程】选项卡,选中【Windows资源管理器】&#xff…

android+1024*768分辨率什么意思,网站上提示的建议用1024X768分辨率,是什么意思?...

满意答案wwt12482016.07.06采纳率:51% 等级:8已帮助:3312人1、800*600下,网页宽度保持在778以内,就不会出现水平滚动条,高度则视版面和内容决定。2、1024*768下,网页宽度保持在1002以内&…

bos表格添加必填项_【Python成长之路】从 零做网站开发 -- 基于Flask和JQuery,实现表格管理平台...

【写在前面】你要开发网站? 嗯。。会Flask吗? 什么东西,没听过。。。会JQuery吗? 是python的库吗 ?那你会什么? 我会F12打开网站好吧,那我们来写个简单的表格管理平台。基于Flask框架和JQuery实…

数字IC设计必备网站

1.EETOP-创芯网 原:中国电子顶级开发网)是一家专为中国电子工程师、芯片工程师和电子设计主管提供半导体电子技术开发应用资讯的网络传媒。其内容服务核心是快速传播半导体集成电路领域的最新技术产品,新闻资讯,电子技术应用知识,…

fastjson之toJSONString、parseObject和SerializerFeature类

简介fastjson是一个java编写的JSON处理器依赖 <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.31</version> </dependency> 常用的方法都是静态方法 public static final Object …

我的github,自己的域名与网站

day 1 听oeasy老师的课&#xff0c;今日笔记&#xff1a; 1.登陆github&#xff0c;新建一个库 2.设置setting 中的page theme 3.新建一个h5.md&#xff0c;修改了内容。 4.点击github page下方的链接访问新的h5.md 5.将圈起来的网址复制&#xff0c;在草料二维码生成二维码&…

如何搭建公司网站?

简介&#xff1a; 我们搭建企业网站有以下几种常见方式 1、自己建站。 2、使用模板建站。 3、招聘网站设计人员搭建网站。 4、找外面的网站设计公司。 5、由国内云计算厂商完成建站工作。现在是互联网时代&#xff0c;很多企业都注重互联网&#xff0c;通过做公司网站进行展示及…

7个优秀的资源网站,值得收藏一波!!

原文地址&#xff1a;https://www.fang1688.cn/ziyuan/2714.html1. 简历生成网站https://www.wondercv.com一键生成自己的简历2. 在线游戏小霸王&#xff0c;童年的回忆有很多小时候都玩过的游戏&#xff0c;值得回味https://www.yikm.net3. 论文文献的资源库http://www.oalib.…

ipv4服务器不显示怎么办,如何解决docker端口映射时IPV4无法使用_网站服务器运行维护...

如何解决docker不能push给http_网站服务器运行维护docker不能push给http的解决方法 &#xff1a;首先在“/etc/docker/”目录下创建“daemon.json”文件&#xff1b;然后在该文件中添加安全配置&#xff1b;最后重启docker即可。如何解决docker端口映射时IPV4无法使用&#xff…

5年Python生涯总结出10个玩Python必备的网站

“玩Python必备的10大精品网站” 5年Python沉淀&#xff0c;总结一下作为一个Python玩家&#xff0c;必须要知道的十大精品网站。 无用请吐槽&#xff01; 有用请点赞&#xff01;&#xff01; 爱我请三连&#xff01;&#xff01;&#xff01; 目录 一、模块查询 二、闯关游戏…

企业网站 源码 服务邮箱:_后来才知道:长春企业邮箱一站式服务

后来才知道&#xff1a;长春企业邮箱一站式服务 qnmsptdb后来才知道&#xff1a;长春企业邮箱一站式服务 我们总觉得&#xff0c;只有熬夜&#xff0c;才能显得自己忙。的策略。一家的站方案&#xff0c;网页排名、关键词、整站都是重要的。您可以先给他们给您一个初步的思路&a…

h5网站模板_有哪些相见恨晚的模板网站?

模板网站&#xff0c;可谓是当代最受欢迎的网站类型之一&#xff0c;只要提供的足够新颖能够满足需求&#xff0c;必然成为懒癌青年们的最爱。这些网站深受喜爱的原因是&#xff1a;大家想要实现某种设计需求&#xff0c;但窘于自己技术没达到&#xff0c;时间来不及现学现卖等…

礼品代发网站源码_礼品代发正式代替空包,使用时要注意这些问题

补单的朋友大多数都使用过空包&#xff0c;但两个月前&#xff0c;各大空包供应商被查&#xff0c;大量空包网站倒闭。前段时间&#xff0c;被抓的空包大佬的新闻一度爬上了微博热搜第二。自此&#xff0c;空包退出历史舞台。而代替空包位置的则是小礼品代发。礼品代发也分多种…

想做一个显示全国火车运行图的网站(1)想想

这一“想”貌似有一个把月了&#xff0c;实现难度片以为还不算高&#xff0c;主要依靠的当然是开放的AIP接口。 首先想到的是51ditu&#xff0c;想想国人自己开发的肯定可以对自己的口味。翻看了文档之后觉得GIS这一块还真是有一些学问&#xff0c;于是又研读起google map api。…

15个优秀的Google提供给网站建立者的工具

一直以来&#xff0c;Google 为 Web 开发与设计者推出了大量的免费工具&#xff0c;让他们更好地创建&#xff0c;维护&#xff0c;改善他们的 Web 站点&#xff0c;这些工具包含了开发&#xff0c;分析&#xff0c;维护&#xff0c;修补等等用途。最重要的是&#xff0c;他们都…

AWWWB 网站克隆器 v2.0发布

软件名称&#xff1a;AWWWB.COM网站克隆器 开发商&#xff08;主页&#xff09;&#xff1a;www.awwwb.com 联系人&#xff1a;awwwb.comqq.com 软件性质&#xff1a;免费软件/开源软件 软件描述&#xff1a; AWWWB.COM网站克隆器&#xff1a;输入被克隆网站的首页网址&#xf…

如何让网站整体或局部变为黑白灰

1.如果想让整站变灰&#xff0c;请在全局css文件中&#xff0c;加入以下代码 html {filter:progid:DXImageTransform.Microsoft.BasicImage(grayscale1);}2.如只想针对所有图片 img{filter:Gray;} 3.只让指定图片变为灰色&#xff0c;比如logo .huise{filter:Gray;} <img sr…

常用SEO查询工具

SEO工作者经常需要一些SEO工具的辅助&#xff0c;比如网站收录查询、PR查询等等&#xff0c;以便节省自己的时间&#xff0c;让SEO变得更加轻松。那么&#xff0c;常用的SEO工具都有哪些呢?月光博客今天就介绍一些常用的SEO工具网址&#xff0c;并将其进行分类&#xff0c;希望…

建站工具推荐—logo制作

建站工具推荐—logo制作 本博建立这么久了~~ 今天推荐一些我用到的一些工具&#xff1a; 1.广告牌生成器&#xff08;阿里妈妈&#xff09;http://banner.alimama.com/ 本博的logo就是用这个制作的&#xff0c;简单方&#xff0c;懒的用PS了。 2.网站LOGO免费在线制…