zoukankan      html  css  js  c++  java
  • Python爬虫教程-12-爬虫使用cookie爬取登录后的页面(人人网)(上)

    Python爬虫教程-12-爬虫使用cookie(上)

    • 爬虫关于cookie和session,由于http协议无记忆性,比如说登录淘宝网站的浏览记录,下次打开是不能直接记忆下来的,后来就有了cookie和session机制

    Python爬虫爬取登录后的页面

    所以怎样让爬虫使用验证用户身份信息的cookie呢,换句话说,怎样在使用爬虫的时候爬取已经登录的页面呢,这就是本篇的重点

    cookie和session介绍

    • cookie是发给用户的(即http浏览器)的一段信息
    • session是保存在服务器上的对应的另一半信息,用来记录记录用户信息
    • cookie和session区别和联系:
      • 1.存放位置不同:cookie保存在本地,session保存在服务器
      • 2.cookie不安全
      • 为什么不安全,因为cookie是保存在本地的,也就是说用户可以就本地找到后进行修改
      • 所以一般用来存放用户身份信息,常用来识别用户身份,比如用户名+登录密码(站点也就不怕被修改了)
      • 当我们关闭浏览器后,再次打开一些网站,不用再次登录,也正是因为使用了保存在本地浏览器的cookie
      • 3.session会保存在服务器上有过期时间,cookie也有
      • 4.单个cookie保存数据不超过4k,部分浏览器会限制一个站点最多保存20个
      • 5.session保存在服务器
      • 一般情况下,session是放在内存中或者数据库中

    使用cookie登录的网站

    例如人人网:

    第一步:Chrome打开登录

    这里写图片描述

    第二步:拷贝Chrome登录后的地址,使用火狐浏览器打开

    这里写图片描述
    这可以看到报错302
    原因就是火狐浏览器的cookie和Chrome保存的cookie不一样,站点判断用户身份改变,所以不允许登录,另一方面,也就说明我们使用 cookie 验证身份是成功的

    主角登场-爬虫使用cookie

    既然其他浏览器不能直接访问网站,我们的爬虫就更不能了,所以怎样让爬虫使用验证用户身份信息的cookie呢?马上揭晓:

    编写爬虫代码

    
    # 爬虫使用cookie
    from urllib import request
    
    if __name__ == '__main__':
        url = "http://www.renren.com/967487029/profile"
    
        headers = {
            # Cookie值从登录后的浏览器,拷贝,方法文章上面有介绍
            "Cookie": "anonymid=jkw22rj1lr18nw; depovince=GW; _r01_=1; JSESSIONID=abcUPkh_yMcQi56IB9avw; ick_login=79ce148f-80c5-4a79-ad1e-897e847d7f34; ick=d4c0f36e-a5b8-4063-b781-8a8474c4a289; t=07c15f420c005cec1ff760ee5370cfeb9; societyguester=07c15f420c005cec1ff760ee5370cfeb9; id=967487029; xnsid=bf077aca; XNESSESSIONID=6302ff129554; BAIDU_SSP_lcr=https://www.baidu.com/link?url=4ejhDX-FjIJI0Ma--EY03Dbwea0D_c1HhU7ExMXfUxO&wd=&eqid=c4ff527c00007cb4000000035b74fb58; wp_fold=0; jebe_key=d4adac05-f904-479c-bf00-a4b55d282a51%7C43e5f9c3c001a1d1846f8b82a462cefd%7C1534398658919%7C1; jebecookies=6031f512-d289-4dff-b1d6-aaa7849bd1ff|||||"
        }
    
        req = request.Request(url=url,headers=headers)
    
        rsp = request.urlopen(req)
        html = rsp.read().decode()
    
        with open("rsp.html","w",encoding="utf-8")as f:
            # 将爬取的页面
            print(html)
            f.write(html)
    

    运行结果

    这里写图片描述
    现在我们可以在返回的html页面看到自己的登录信息了,也就说明cookie使用成功了

    今天介绍的是手动拷贝cookie,后面会介绍如何自动的使用!

    更多文章链接:Python 爬虫随笔


    - 本笔记不允许任何个人和组织转载
  • 相关阅读:
    python字典及其内置函数详解
    python函数语法学习
    python切片、迭代、生成器、列表生成式等高级特性学习
    Python入门及安装
    node中的加密模块 crypto
    Nodejs+MongoDB+Bootstrap+esj搭建的个人简易博客
    JavaScript的深拷贝和浅拷贝总结
    redux 学习总结
    简述redux(1)
    通信数据转发程序:代理、网关、隧道
  • 原文地址:https://www.cnblogs.com/xpwi/p/9600739.html
Copyright © 2011-2022 走看看