人人网(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

猜你喜欢

转载自www.cnblogs.com/renshaoqi/p/10420780.html