zoukankan      html  css  js  c++  java
  • 人人网(cookie登录)

      有时候,我们在爬取一些网页之前必需要登录该网站,比如说我想爬取我的人人网主页内容。

    1、打开:www.renren.com

    2、输入用户名和密码,登录网站18679030315

    3、个人首页,如下图:

    那么直接请求:http://www.renren.com/964508591/profile 可不可以呢?我们试一下。

      打印出来的东西没有获取到个人信息,通过上述代码,我们请求到的数据其实是人人网首页的数据,这跟我们“平时浏览一些内容的时候,网页自动跳转到登录页”的情况是一样的。

      那么如何在爬取“个人主页”的信息呢?这个时候我们需要加一些身份信息,在哪儿加?在Cookie。Cookie中保存了用户的登录状态。

    复制Cookie信息,添加到headers中,然后再发起请求:

    代码:

    输出结果:

     

    将显示个人信息,表示请求到我想要的数据了。

    代码如下:

    import requests
    
    # 定义爬取url地址
    base_url = 'http://www.renren.com/964508591/profile'
    
    # 定义headers,cookie保存了登录信息(用户名和密码)
    headers = {
        "Cookie": "anonymid=jsfnsdta-9wkx8y; "
                  "depovince=GW; "
                  "jebecookies=8b9ae51c-9f33-4411-91e1-8cf089c4038b|||||; "
                  "_r01_=1; "
                  "JSESSIONID=abcSP3j-rLG5T4RFC1tKw; "
                  "ick_login=3aa429d9-fef7-4f32-87f0-6bed6e39881a; "
                  "_de=5F71EE4FAB787F2D9124C42004FCABA0; "
                  "p=9f3825923c315bb6a9600ef5179d781f1; "
                  "first_login_flag=1; "
                  "ln_uact=18679030315; "
                  "ln_hurl=http://head.xiaonei.com/photos/0/0/men_main.gif; "
                  "t=c516b899cbe52eb456b80bd3a71771611; "
                  "societyguester=c516b899cbe52eb456b80bd3a71771611; id=964508591; "
                  "xnsid=ec298a5b; "
                  "ver=7.0; "
                  "loginfrom=null; "
                  "jebe_key=0c6ad138-7b82-45f2-98af-653a8c1fbd41%7C8562fb69c05d6f5ab11983a626d37548%7C1550816017179%7C1%7C1550816017961; "
                  "wp_fold=0"
    }
    
    # 发起携带cookie的请求
    response = requests.get(base_url, headers=headers)
    print(response.text)
    View Code

    获取Cookies 和 Sission来请求

    1、Cookies

     如果一个响应中包含了cookie,那么我们可以利用 cookies参数拿到:

    代码如下:

    import requests
    
    # 定义爬取url地址
    base_url = 'Https://www.baidu.com/'
    
    # 发起请求
    response = requests.get(base_url)
    
    
    # 获取cookie
    cookiejar = response.cookies
    
    # 从cookiejar中获取cookie信息
    cookie = requests.utils.dict_from_cookiejar(cookiejar)
    
    print(cookie)
    View Code

    2、Session

      在 requests 里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。

      会话能让我们在跨请求时候保持某些参数,比如在同一个 Session 实例发出的所有请求之间保持 cookie 。

      每次通过查找cookie很麻烦,需要复制粘贴,所以使用sessio来完成登录,只需要用户账号和密码就可以。

    代码如下:

    import requests
    
    # 创建session对象
    session = requests.session()
    
    # 定义账号和密码
    data = {'email':'xxxxxx','密码':'xxxxxx'}
    
    # 将账号和密码写入session中
    session.post('http://www.renren.com/PLogin.do', data=data)
    
    # 使用含有账号和密码的session发起请求
    response = session.get('http://www.renren.com/964508591/profile')
    
    print(response.text)
    View Code
  • 相关阅读:
    获取dbf中的表名
    dbf 工程模式连接(vfp c# )
    SQL Server插入中文数据出现乱码问题
    给老婆写的带返回的2048(数据库存储)
    BundleConfig包含js,css失败
    (wp8.1开发)添加数据(SQLite)库到app
    (wp8.1开发)触摸键从推出变返回
    java基础-jdk工具包
    java基础-开发工具IDEA
    java高级-动态注入替换类Instrumentation
  • 原文地址:https://www.cnblogs.com/renshaoqi/p/10420780.html
Copyright © 2011-2022 走看看