python爬虫需要cookie_python爬虫(六) Cookie

什么是Cookie

在网站中,http的请求通常是无状态的(第一个和服务器连接并且登录之后,此时服务器知道是哪个用户,但是当第二次请求服务器时,服务器依然不知道当前请求的是哪个用户),cookie就是为了解决这个问题,第一次登录服务器后,服务器会返回与刚刚用户相关的数据(也就是cookie)给浏览器,浏览器将cookie保存在本地,当这个用户第二次请求服务器时,就会把上次存储的cookie自动携带给服务器,服务器通过这个cookie就知道当前是哪个用户。cookiede存储数据有限,不同的浏览器存储大小不同。一般不超过4kb。

在一些爬虫中,我们在进入一个页面之前需要先登录,比如人人网,我们想要在人人网中浏览大鹏的主页,就要先注册登录,然后才能浏览,那么在爬虫时,如何保持登录状态呢?

第一种:

就需要在请求头中加入cookie。

我们在页面中右击-选择查看元素-然后选择network-刷新选择第一个profile-然后找到cookie

把cookie放到外我们代码的请求头中

#使用cookie如何保持登录

from urllib importrequest

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 importrequestfrom urllib importparsefrom http.cookiejar importCookieJar#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':'123456'}

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'))

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值