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 Deque 模块使用详解
Jul 04 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Python检测一个对象是否为字符串类的方法
May 21 Python
python实现数值积分的Simpson方法实例分析
Jun 05 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
python 字符串只保留汉字的方法
Nov 16 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
python列表插入append(), extend(), insert()用法详解
Sep 14 Python
python实现银行管理系统
Oct 25 Python
python计算二维矩形IOU实例
Jan 18 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
Apr 24 Python
浅谈哪个Python库才最适合做数据可视化
Jun 28 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下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码
2011/09/19 PHP
php站内搜索并高亮显示关键字的实现代码
2011/12/29 PHP
php实现网页缓存的工具类分享
2015/07/14 PHP
PHP的Yii框架使用中的一些错误解决方法与建议
2015/08/21 PHP
Laravel 5.4.36中session没有保存成功问题的解决
2018/02/19 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
2012/09/14 Javascript
使用apply方法处理数组的三个技巧[译]
2012/09/20 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
nodejs基础之常用工具模块util用法分析
2018/12/26 NodeJs
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
python3实现多线程聊天室
2018/12/12 Python
numpy创建单位矩阵和对角矩阵的实例
2019/11/29 Python
python 读取.nii格式图像实例
2020/07/01 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
意大利一家专营包包和配饰的网上商店:Borse Last Minute
2019/08/26 全球购物
Vrbo西班牙:预订您的度假公寓(公寓、乡村房屋…)
2020/04/27 全球购物
尽职尽责村干部自我鉴定
2014/01/23 职场文书
旅游业大学生创业计划书
2014/01/31 职场文书
村抢险救灾方案
2014/05/09 职场文书
安全生产承诺书范文
2014/05/22 职场文书
工伤事故赔偿协议书
2014/10/27 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
明确岗位职责
2015/02/14 职场文书
硕士论文致谢范文
2015/05/14 职场文书
拉贝日记观后感
2015/06/05 职场文书
python3操作redis实现List列表实例
2021/08/04 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python