Python 自动登录淘宝并保存登录信息的方法


Posted in Python onSeptember 04, 2019

前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富。所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0。版本的迭代意味着功能的升级,那今天的2.0版本较之前的1.0版本有哪些改进呢?我们一起来看看!

1.0版本实现步骤

我们先来回顾一下模拟登录淘宝的步骤吧,我们还是先看看淘宝登录的详细时序图:

Python 自动登录淘宝并保存登录信息的方法

这是淘宝网登录的一个请求流程,而我们模拟登录也是根据这样的一个流程。但是在代码模拟登录的时候就不会分的这么细,我们根据封装的思想将整个登录流程封装在四个方法里面,可以看看下图。

Python 自动登录淘宝并保存登录信息的方法

为了便于大家理解四步登录法,我又画了一个流程图给大家看看:

Python 自动登录淘宝并保存登录信息的方法

结合流程图,给大家简单 的 再讲解一遍这四步具体做了啥:

  1. 拿着用户名向淘宝(taobao.com)发起一个post的请求,判断是否出现滑块验证。
  2. 向淘宝(taobao.com)又发起一个post请求,验证用户名密码是否正确,如果正确则返回一个token。
  3. 拿着token去阿里巴巴(alibaba.com)交换st码。
  4. 获取st码之后,拿着st码获取cookies,登录成功。

在面试的时候也许面试官会问你是否爬取或自动登录过淘宝,流程是怎么的?大家就这个把这个四步登录法讲给面试官听 ,面试官不仅不会你的技术认可,也为认可你的逻辑思维缜密!

2.0版本新增功能

为什么要做2.0版本?因为我在做爬取淘宝商品的时候发现之前登录有一个很不方便的 地方:每次程序运行完后,登录的cookies就没了,也就是说下次又要重新登录。

而浏览器却可以保存cookies信息,所以我自然地想到了:将cookies序列化。

序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。——百度百科

简单说序列化就是将对象持久性保存起来,因为原来对象是在内存中,程序运行完了就要释放内存,所有的对象、变量等都会被清除,而序列化则可以把他们保存到文件。即使程序关闭了,下次启动的时候可以读取文件到内存转回对象继续使用,而这个过程叫反序列化。

所以我们2.0的功能就是:将登录后的cookies保存到文件中,下次再登录先从cookies文件读取!也就是增加了一个保存cookies 的功能,我们再看看2.0的流程图。

Python 自动登录淘宝并保存登录信息的方法

与1.0的流程图相比,其实就多了左边的cookies文件和cookies文件的校验,这也就是我们今天要讲的内容!

别看只是增加了一点点功能,却意义重大:因为这是一个 授人予渔的功能,你学会之后其他所有的登录都可以做序列化保存cookies,而且还可以做cookies池!

2.0版本新功能实现

根据上面的流程图,我们可以简单的分析量化一下增加的保存cookies这个共功能:

保存cookies:增加一个方法,当使用st码登录成功后,用来将cookies对象转化为文件

读取cookies:增加一个方法,用来读取cookies文件,将它转化为cookies对象

检查cookies:增加一个方法,用来判断cookies是否失效,如果失效则删除cookies文件,如果有效则直接登录成功!

根据以上三步,我们就可以开始撸代码了

1.保存cookies

保存cookies其实就叫序列化,我们先来看看代码:

Python 自动登录淘宝并保存登录信息的方法

我们先获取cookies,然后再转为dict对象,最后将dict转化为JSON对象保存起来!

2.读取cookies

读取cookies就是将文件转转化为cookies对象,这一步叫反序列化,直接上代码:

Python 自动登录淘宝并保存登录信息的方法

其实反序列化就是与序列化的步骤相反,先将文件转化为dict对象,然后再转化为cookies对象,最后赋值给Session对象!

3.检查cookies

这一步我们需要先判断cookies文件是否存在,如果存在则读取cookies,之后再访问淘宝主页看看是否能成功,如果失败则说明cookies已过期,我们就删除cookies文件。

Python 自动登录淘宝并保存登录信息的方法

重构代码

功能点实现之后我们看看怎么重构代码,根据流程图,我们需要在方法开头增加加载cookies的功能,再最后登录成功的时候增加保存cookies的方法,所以改动只有两处!

Python 自动登录淘宝并保存登录信息的方法

功能测试

在我们实际开发工作中 ,测试是一项非常重要的步骤。一般开发都需要先自测,如果不自测就直接提测的话,测试测出Bug你不仅会被怼被鄙视有些公司还会影响你的KPI。

我们来说说序列化cookies功能自测的流程吧:

首先我们登录,看看登录成功会不会将cookies保存为文件,这一步是测试序列化;

然后我们再登录一次,根据打印信息,看看是不是直接读取cookies文件登录的,这一步测试反序列化;

最后我们测试当cookies过期之后,会不会删除cookies文件,然后使用用户名密码登录,最后保存新的cookies文件。

1.测试正常登录

第一次登录是没有cookies文件的,所以正常使用用户名和密码登录,登录成功后保存cookies文件。

Python 自动登录淘宝并保存登录信息的方法

2.测试加载cookies登录

在正常登录之后,保存了cookeis文件,这里我们要测试是否能成功加载文件中的cookies:

3.测试cookies过期

大家都知道cookies都会有一个过期时间,而经过测试淘宝登录的过期时间大概为60分钟!cookies过期之后我们需要重新登录然后重新保存cookeis文件。

Python 自动登录淘宝并保存登录信息的方法

至此所有的功能点 已经自测完毕,这时候就可以提测给测试人员,而测试人员测试通过之后,便可以上预发环境测试,预发测试通过之后才是正式环境!

现在很多公司发布策略都是:小功能都在白天发布了,而比较大的改版还是会安排在深夜,用户少的时候!

总结

今天我们学习了如何保存登录信息,下期我将会教大家如何爬取淘宝商品信息并做数据分析,还是挺有意思的,期待吧!

看到很多同学会在学习群里交流一些以前写的案例,感觉自己做的这些教程有意义,看到大家在学习,我心里超开心。

源码:https://github.com/pig6/login_taobao

以上所述是小编给大家介绍的使用Python 自动登录淘宝并保存登录信息的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
在Python的Django框架中编写错误提示页面
Jul 22 Python
Jupyter中直接显示Matplotlib的图形方法
May 24 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
python里运用私有属性和方法总结
Jul 08 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
Aug 06 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
jupyter实现重新加载模块
Apr 16 Python
升级keras解决load_weights()中的未定义skip_mismatch关键字问题
Jun 12 Python
Python 删除List元素的三种方法remove、pop、del
Nov 16 Python
Python爬虫入门教程01之爬取豆瓣Top电影
Jan 24 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 Python
通过Python编写一个简单登录功能过程解析
Sep 04 #Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
Sep 04 #Python
python3实现微型的web服务器
Sep 03 #Python
Python面向对象之Web静态服务器
Sep 03 #Python
Python字符串和正则表达式中的反斜杠('\')问题详解
Sep 03 #Python
Django中间件拦截未登录url实例详解
Sep 03 #Python
如何为Python终端提供持久性历史记录
Sep 03 #Python
You might like
php.ini-dist 和 php.ini-recommended 的区别介绍(方便开发与安全的朋友)
2012/07/01 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
[原创]IE view-source 无法查看看源码 JavaScript看网页源码
2009/07/19 Javascript
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
js getElementsByTagName的简写方式
2010/06/27 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
File, FileReader 和 Ajax 文件上传实例分析(php)
2011/04/27 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
ES6中module模块化开发实例浅析
2017/04/06 Javascript
PHP实现记录代码运行时间封装类实例教程
2017/05/08 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
nuxt+axios实现打包后动态修改请求地址的方法
2020/04/22 Javascript
Python爬虫框架Scrapy安装使用步骤
2014/04/01 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
Python人脸识别初探
2017/12/21 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
详解Python 4.0 预计推出的新功能
2019/07/26 Python
Python 实现网课实时监控自动签到、打卡功能
2020/03/12 Python
python脚本监控logstash进程并邮件告警实例
2020/04/28 Python
python不同系统中打开方法
2020/06/23 Python
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
Baby Tulai澳大利亚:美国婴儿背带品牌
2018/10/15 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
Java里面如何创建一个内部类的实例
2015/01/19 面试题
清明节演讲稿
2014/05/27 职场文书
市级绿色学校申报材料
2014/08/25 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
迎国庆横幅标语
2014/10/08 职场文书
2015年班长个人工作总结
2015/04/03 职场文书
PyCharm配置KBEngine快速处理代码提示冲突、配置命令问题
2021/04/03 Python
Java基础——Map集合
2022/04/01 Java/Android