python爬虫(六) Cookie
什么是Cookie
在网站中,http的请求通常是无状态的(第一个和服务器连接并且登录之后,此时服务器知道是哪个用户,但是当第二次请求服务器时,服务器依然不知道当前请求的是哪个用户),cookie就是为了解决这个问题,第一次登录服务器后,服务器会返回与刚刚用户相关的数据(也就是cookie)给浏览器,浏览器将cookie保存在本地,当这个用户第二次请求服务器时,就会把上次存储的cookie自动携带给服务器,服务器通过这个cookie就知道当前是哪个用户。cookiede存储数据有限,不同的浏览器存储大小不同。一般不超过4kb。
在一些爬虫中,我们在进入一个页面之前需要先登录,比如人人网,我们想要在人人网中浏览大鹏的主页,就要先注册登录,然后才能浏览,那么在爬虫时,如何保持登录状态呢?
第一种:
就需要在请求头中加入cookie。
我们在页面中右击-选择查看元素-然后选择network-刷新选择第一个profile-然后找到cookie


把cookie放到外我们代码的请求头中
# 使用cookie如何保持登录
from urllib import request
dapeng_url='http://www.renren.com/880151247/profile' headers={
'User-Agent':"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36",
'Cookie':"anonymid=k71toeni-kgxl6w; ick=15da19e2-eda3-436b-bbff-75e5ed22675a; t=2e83d3955db7ebed31b7aa451ce1fc3e6; societyguester=2e83d3955db7ebed31b7aa451ce1fc3e6; id=973827756; xnsid=83d505c7; XNESSESSIONID=96f6169a931b; JSESSIONID=abcnUOS-mxGHLfAakl8bx; depovince=GW; jebecookies=06d125d2-feee-42d3-b3dd-c2d44c83ca52|||||; ver=7.0; loginfrom=null; taihe_bi_sdk_uid=e1ab093fade1d5f67bb87b09690c33ec; taihe_bi_sdk_session=b22cdcce97f748cdd571ae2dd15f35c0; jebe_key=3f1e8e5f-c442-44f0-913c-b5724bf5f271%7C92df3a4ff360db67ebedb3fcbe322fc1%7C1582631331810%7C1%7C1582631331959; jebe_key=3f1e8e5f-c442-44f0-913c-b5724bf5f271%7C92df3a4ff360db67ebedb3fcbe322fc1%7C1582631331810%7C1%7C1582631331961; wp_fold=0"
}
req=request.Request(url=dapeng_url,headers=headers)
resp=request.urlopen(req)
print(resp.read().decode('utf-8'))
我们就可以在保持登录的状态下进入大鹏的主页

第二种:
http.cookiejar模块:该模块主要得类有:cookiejar、filecookiejar、mozaillacookiejar、lwpcookiejar。我们使用第一个就行,保存在类存中。
这一种可以实现自动化,不需要每次都在请求头中复制cookie
from urllib import request
from urllib import parse
from http.cookiejar import CookieJar # 1、登录
# 1.1、创建一个cookiejar对象,里面包含了登录用到得信息
cookiejar=CookieJar()
# 1.2 使用cookiejar创建一个HTTPCookieProcess对象,找个代理,并且里面已经包含了cookiejar
handler=request.HTTPCookieProcessor(cookiejar)
# 1.3、使用上一步骤创建一个handler创建一个opener
opener=request.build_opener(handler)
# 1.4、使用opener发送登录请求(人人网得邮箱和密码)
headers={
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"
}
data={
'email':'2605072149@qq.com',
'password':''
}
login_url="http://www.renren.com/PLogin.do"
req=request.Request(login_url,data=parse.urlencode(data).encode('utf-8'),headers=headers)
opener.open(req)
# 2、访问个人主页
dapeng_url="http://www.renren.com/880151247/profile"
# 获取个人主页信息得时候,使用之前得那个opener,因为已经包含了登录用得信息
resp=opener.open(dapeng_url)
with open("renren.html","w",encoding='utf-8') as fp:
fp.write(resp.read().decode('utf-8'))
python爬虫(六) Cookie的更多相关文章
- python爬虫(六)_urllib2:handle处理器和自定义opener
本文将介绍handler处理器和自定义opener,更多内容请参考:python学习指南 opener和handleer 我们之前一直使用的是urllib2.urlopen(url)这种形式来打开网页 ...
- python爬虫+使用cookie登录豆瓣
2017-10-09 19:06:22 版权声明:本文为博主原创文章,未经博主允许不得转载. 前言: 先获得cookie,然后自动登录豆瓣和新浪微博 系统环境: 64位win10系统,同时装pytho ...
- python爬虫之Cookie
由于http协议是无状态协议(假如登录成功,当访问该网站的其他网页时,登录状态消失),此时,需要将会话信息保存起来,通过cookie或者session的方式 cookie 将所有的回话信息保存在客户端 ...
- Python 爬虫六 性能相关
前面已经讲过了爬虫的两大基础模块: requests模块:用来伪造请求爬取数据 bs4模块:用来整理,提取数据 当我们真正的开始有需求的时候通常都是批量爬取url这样的.那如何批量爬取呢? 按照正常的 ...
- python爬虫-使用cookie登录
前言: 什么是cookie? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密). 比如说有些网站需要登录后才能访问某个页面,在登录之前,你想 ...
- Python爬虫之Cookie和Session
关于cookie和session估计很多程序员面试的时候都会被问到,这两个概念在写web以及爬虫中都会涉及,并且两者可能很多人直接回答也不好说的特别清楚,所以整理这样一篇文章,也帮助自己加深理解 什么 ...
- Python爬虫之cookie的获取、保存和使用【新手必学】
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:huhanghao Cookie,指某些网站为了辨别用户身份.进行ses ...
- 【python爬虫】cookie & session
一.什么是cookie? cookie是指网站为了鉴别用户身份,进行会话跟踪而存储在客户端本地的数据. 二.什么是session? 本来的含义是指有始有终的一些列动作,而在web中,session对象 ...
- Python爬虫教程
Python爬虫(1):基本原理 Python爬虫(2):Requests的基本用法 Python爬虫(3):Requests的高级用法 Python爬虫(4):Beautiful Soup的常用方法 ...
- python爬虫基础16-cookie在爬虫中的应用
Cookie的Python爬虫应用 Cookie是什么 Cookie,有时也用其复数形式 Cookies,英文是饼干的意思.指某些网站为了辨别用户身份.进行 session 跟踪而储存在用户本地终端上 ...
随机推荐
- selenium+python自动化用例登陆界面模板
一.基本逻辑 1.自动填写用户名和密码登录成功后跳转到相应页面 2.验证相应页面的url与给定的url是否一致,如果一致则测试通过,如果不一致则不通过 二.以jenkins登陆界面为例,代码如下 fr ...
- php 基础 二维数组以某个重复值累加
$arr = array( array('id' => 123, 'name' => '张三', 'amount'=>'1'), array('id' => 123, 'nam ...
- 使用Python处理非对称加密-测试大佬常用的处理方式
一.思考❓❔ 1.什么是非对称加密? 公钥加密系统,广泛用于数据加密传输 更详细的解释可参考维基百科( https://en.wikipedia.org/wiki/RSA_(cryptosystem) ...
- ENS中文文档系列之三 [ ENS常见问题 ]
原文地址:https://ensuser.com/docs/frequently-asked-questions.html更多最新信息,请前往 ENS 中文服务站点:ENSUser 关于 ENS 注册 ...
- ExecutorService 的Future类
1.概述 在本文中,我们将了解Future.自Java 1.5以来一直存在的接口,在处理异步调用和并发处理时非常有用. 2.创建Future 简单地说,Future类表示异步计算的未来结果 - 这个结 ...
- 【原】docker-compose 管理docker的多容器配置
docker-compose管理docker的多容器配置,实现docker的自动化. version: '3.4' x-defaults: &defaults restart: unless- ...
- vs2019 opencv4的相关配置
opencv4.11存在改动,导致许多demo没有办法正常运行,但是配置方法却是相同的. 主要是连接器输入,头文件包含路径,库路.如果想要调试,还需要设置调试文件符号表. [未完待续]
- 分享Linux系统快速入门法
相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣 ...
- python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根。
python练习:使用二分法查找求近似平方根,使用二分法查找求近似立方根. 重难点:原理为一个数的平方根一定在,0到这个数之间,那么就对这之间的数,进行二分遍历.精确度的使用.通过最高值和最低值确定二 ...
- python中os.path.abspath与os.path.realpath 区别
python中os.path.abspath与os.path.realpath 区别cd /homemkdir amkdir btouch a/1.txtln -s /home/a/1.txt /ho ...