Python爬虫实例(四):发送Cookie请求

利用get或post发送cookie请求,都可以爬取网络上的数据。

 

cookie 是指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。

方法一:headers参数中直接携带cookie

在定义headers参数时,直接将页面的cookie参数作为字符串带上,如 headers = {"User_Agent": "xxx", "cookie": "xxx"}。发送请求时,将值赋给headers参数。

url = 'http://www.renren.com/272605506/profile'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
           'Cookie': 'XXXXX'}
response = requests.get(url, headers=headers)
print(response.content.decode())

方法二:直接设置cookies参数

在发送请求时,将带有cookie参数的字典赋值给cookies参数,如 requests.get(url, cookies=cookie的字典)。由于cookie中以“; ”分隔的参数有很多个,故采用cookie.split("; ")的方式生成字典

url = 'http://www.renren.com/272605506/profile'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

cookie = 'anonymid=jr8w5k4xoyfp2j; depovince=GUZ; _r01_=1; XXX=xxx'
cookie_para = {i.split("=")[0]: i.split("=")[1] for i in cookie.split("; ")}
response = requests.get(url, headers=headers, cookies=cookie_para)
print(response.content.decode())

方法三:先发送post请求,获取cookie,然后再带上cookie请求登录后的页面

如下,url地址是登录后的页面,url2是登录界面的地址。

session = requests.session() 先实例化一个session,名字可以叫做session或者其他。session具有的方法和requests一样,如requests.get,requests.post,同样有session.get,session.post。

session.post(url, data=xxx, headers=xxx) 发送post请求,获取cookie。对方服务器设置在本地的cookie会保存在session中。这里post请求需带上请求体data(复习请求体:Python爬虫之个人笔记(二):requests模块应用,发送get/post请求,获取响应)。请求体的内容就是登录网站的账号和密码。可以直接将已知的账密分别赋值给email、password,但显性的账密不安全;所以也可以找到post请求中的Form Data,将email后面的账号,password后面加密的密码复制下来。

response = session.get(url, headers=xxx) 会带上之前保存在session中的cookie,再通过get方法请求登录后的页面

url = 'http://www.renren.com/272605506/profile'
url2 = 'http://www.renren.com/PLogin.do'

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
post_data = {'email': 'aaa@163.com', 'password': 'bbb'}

session = requests.session()
session.post(url2, data=post_data, headers=headers)
response = session.get(url, headers=headers)
print(response.content.decode())

注意:这里涉及到的headers、data、cookies这些参数,都是被字典类型的参数赋值的。

                                                如果觉得内容不错,请扫码关注微信公众号,获取更多内容

                                        

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

199铱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值