zoukankan      html  css  js  c++  java
  • 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':'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'))
  • 相关阅读:
    java算法集训结果填空题练习2
    java算法集训结果填空题练习1
    java算法集训结果填空题练习1
    java算法集训结果填空题练习1
    java算法集训结果填空题练习1
    java算法集训结果填空题练习1
    java算法集训代码填空题练习3
    java算法集训代码填空题练习3
    java算法集训代码填空题练习3
    java算法集训代码填空题练习3
  • 原文地址:https://www.cnblogs.com/zhaoxinhui/p/12363622.html
Copyright © 2011-2022 走看看