python爬虫 模拟登录人人网过程解析


Posted in Python onJuly 31, 2019

requests 提供了一个叫做session类,来实现客户端和服务端的会话保持

使用方法

1.实例化一个session对象

2.让session发送get或者post请求

session = requests.session()
session.get(url,headers)

下面就用人人网来实战一下

# coding=utf-8
import requests
session = requests.session()
# 登录的表单url
post_url = "http://www.renren.com/PLogin.do"
post_data = {"email": "your_email", "password": "your_password"}
headers = {
  "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"
}
# 使用session发送post请求,cookie保存在其中
session.post(post_url, data=post_data, headers=headers)
# 在使用session进行请求登陆之后才能访问的地址
# 这是个人首页url
r = session.get("http://www.renren.com/327550088/profile", headers=headers)
# 保存页面到本地
with open("renren1.html", "w", encoding="utf-8") as f:
  f.write(r.content.decode('utf-8'))

就这么简单,模拟登录上人人网并且获取了个人首页信息页面保存到本地。

其实网站记录登录状态就是通过cookie里面携带的信息,如果我们发送请求的时候带上登录的cookie能不能够访问到只有登录才能访问的页面,当然是可以的

请看代码

# coding=utf-8
import requests
headers = {
  "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
  "Cookie":"你的登录cookie"
}
r = requests.get("http://www.renren.com/327550088/profile",headers=headers)
#保存页面
with open("renren2.html","w",encoding="utf-8") as f:
  f.write(r.content.decode())

可以看到, Cookie 可以放在 headers 中,其实 requests 中也有一个参数用来传递cookie,这个参数就是 cookies

请看代码

# 字典生成器的用法
cookies = {i.split("=")[0]:i.split("=")[1] for i in cookies.split("; ")}
print(cookies)
r = requests.get("http://www.renren.com/327550088/profile",headers=headers,cookies=cookies)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python爬取网易云音乐热门评论
Mar 31 Python
利用Pyhton中的requests包进行网页访问测试的方法
Dec 26 Python
python通过SSH登陆linux并操作的实现
Oct 10 Python
pytorch 彩色图像转灰度图像实例
Jan 13 Python
Pytorch在dataloader类中设置shuffle的随机数种子方式
Jan 14 Python
pytorch使用tensorboardX进行loss可视化实例
Feb 24 Python
Python实现从N个数中找到最大的K个数
Apr 02 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
May 26 Python
python安装和pycharm环境搭建设置方法
May 27 Python
python中复数的共轭复数知识点总结
Dec 06 Python
OpenCV+Python3.5 简易手势识别的实现
Dec 21 Python
Python利用FlashText算法实现替换字符串
Mar 31 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 #Python
Django实现跨域的2种方法
Jul 31 #Python
Django CSRF跨站请求伪造防护过程解析
Jul 31 #Python
在VS2017中用C#调用python脚本的实现
Jul 31 #Python
使用pip安装python库的多种方式
Jul 31 #Python
python实现几种归一化方法(Normalization Method)
Jul 31 #Python
python Django编写接口并用Jmeter测试的方法
Jul 31 #Python
You might like
php 数学运算验证码实现代码
2009/10/11 PHP
PHP 工厂模式使用方法
2010/05/18 PHP
通过PHP修改Linux或Unix口令的方法分享
2012/01/30 PHP
洪恩在线成语词典小偷程序php版
2012/04/20 PHP
PHP数据过滤的方法
2013/10/30 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP 实现从数据库导出到.csv文件方法
2017/07/06 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
js更优雅的兼容
2010/08/12 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
详细解密jsonp跨域请求
2015/04/15 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
jQuery新窗口打开外链接
2016/07/21 Javascript
移动开发之自适应手机屏幕宽度
2016/11/23 Javascript
jQuery实现的简单在线计算器功能
2017/05/11 jQuery
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Vue-Quill-Editor富文本编辑器的使用教程
2018/09/21 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
Vue组件的使用及个人理解与介绍
2019/02/09 Javascript
javascript面向对象三大特征之继承实例详解
2019/07/24 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
js实现碰撞检测
2021/01/29 Javascript
[03:09]DOTA2亚洲邀请赛 LGD战队出场宣传片
2015/02/07 DOTA
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
基于并发服务器几种实现方法(总结)
2017/12/29 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
德国高尔夫商店:Golfshop.de
2019/06/22 全球购物
出纳员的岗位职责
2014/02/22 职场文书
股权收购意向书
2014/04/01 职场文书
捐资助学倡议书
2014/04/15 职场文书
宿舍管理制度范本
2015/08/07 职场文书
机械生产实习心得体会
2016/01/22 职场文书