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中使用HTMLParser解析HTML的教程
Apr 29 Python
python使用os.listdir和os.walk获得文件的路径的方法
Dec 16 Python
Python实现爬取百度贴吧帖子所有楼层图片的爬虫示例
Apr 26 Python
python3解析库lxml的安装与基本使用
Jun 27 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
django如何自己创建一个中间件
Jul 24 Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 Python
python内置函数sorted()用法深入分析
Oct 08 Python
Python log模块logging记录打印用法解析
Jan 20 Python
容易被忽略的Python内置类型
Sep 03 Python
Python 数据可视化之Matplotlib详解
Nov 02 Python
Python读写yaml文件
Mar 20 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实现的多彩标签效果代码分享
2014/08/21 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
Yii2下session跨域名共存的解决方案
2017/02/04 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
默认让页面的第一个控件选中的javascript代码
2009/12/26 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
jQuery中:checkbox选择器用法实例
2015/01/03 Javascript
实例详解jQuery结合GridView控件的使用方法
2016/01/04 Javascript
jQuery简单注册和禁用全局事件的方法
2016/07/25 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
Vue.JS入门教程之事件监听
2016/12/01 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
2017/03/24 jQuery
redux.js详解及基本使用
2019/05/24 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
layui 实现自动选择radio单选框(checked)的方法
2019/09/03 Javascript
Vue循环中多个input绑定指定v-model实例
2020/08/31 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
python实现根据ip地址反向查找主机名称的方法
2015/04/29 Python
Python求两个圆的交点坐标或三个圆的交点坐标方法
2018/11/07 Python
浅谈pyqt5在QMainWindow中布局的问题
2019/06/21 Python
Django 开发环境与生产环境的区分详解
2019/07/26 Python
通过实例了解Python str()和repr()的区别
2020/01/17 Python
python 中关于pycharm选择运行环境的问题
2020/10/31 Python
css3的@media属性实现页面响应式布局示例代码
2014/02/10 HTML / CSS
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
给老婆的搞笑检讨书
2014/01/12 职场文书
医学求职信
2014/05/28 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
护士年终个人总结
2015/02/13 职场文书
Oracle中日期的使用方法实例
2022/07/07 Oracle