python 登陆淘宝_如何用 Python 自动登录淘宝并保存登录信息?
原标题:如何用 Python 自动登录淘宝并保存登录信息?
作者 | 猪哥
责编 | 伍杏玲
前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富。所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0。版本的迭代意味着功能的升级,那今天的2.0版本较之前的1.0版本有哪些改进呢?我们一起来看看!
1.0版本实现步骤
我们先来回顾一下模拟登录淘宝的步骤吧,我们还是先看看淘宝登录的详细时序图:
这是淘宝网登录的一个请求流程,而我们模拟登录也是根据这样的一个流程。但是在代码模拟登录的时候就不会分的这么细,我们根据封装的思想将整个登录流程封装在四个方法里面,可以看看下图。
为了便于大家理解四步登录法,我又画了一个流程图给大家看看:
结合流程图,给大家简单 的 再讲解一遍这四步具体做了啥:
拿着用户名向淘宝(taobao.com)发起一个post的请求,判断是否出现滑块验证。
向淘宝(taobao.com)又发起一个post请求,验证用户名密码是否正确,如果正确则返回一个token。
拿着token去阿里巴巴(alibaba.com)交换st码。
获取st码之后,拿着st码获取cookies,登录成功。
在面试的时候也许面试官会问你是否爬取或自动登录过淘宝,流程是怎么的?大家就这个把这个四步登录法讲给面试官听 ,面试官不仅不会你的技术认可,也为认可你的逻辑思维缜密!
2.0版本新增功能
为什么要做2.0版本?因为我在做爬取淘宝商品的时候发现之前登录有一个很不方便的 地方:每次程序运行完后,登录的cookies就没了,也就是说下次又要重新登录。
而浏览器却可以保存cookies信息,所以我自然地想到了:将cookies序列化。
序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。——百度百科
简单说序列化就是将对象持久性保存起来,因为原来对象是在内存中,程序运行完了就要释放内存,所有的对象、变量等都会被清除,而序列化则可以把他们保存到文件。即使程序关闭了,下次启动的时候可以读取文件到内存转回对象继续使用,而这个过程叫反序列化。
所以我们2.0的功能就是:将登录后的cookies保存到文件中,下次再登录先从cookies文件读取!也就是增加了一个保存cookies 的功能,我们再看看2.0的流程图。
与1.0的流程图相比,其实就多了左边的cookies文件和cookies文件的校验,这也就是我们今天要讲的内容!
别看只是增加了一点点功能,却意义重大:因为这是一个 授人予渔的功能,你学会之后其他所有的登录都可以做序列化保存cookies,而且还可以做cookies池!
2.0版本新功能实现
根据上面的流程图,我们可以简单的分析量化一下增加的保存cookies这个共功能:
保存cookies:增加一个方法,当使用st码登录成功后,用来将cookies对象转化为文件
读取cookies:增加一个方法,用来读取cookies文件,将它转化为cookies对象
检查cookies:增加一个方法,用来判断cookies是否失效,如果失效则删除cookies文件,如果有效则直接登录成功!
根据以上三步,我们就可以开始撸代码了
1.保存cookies
保存cookies其实就叫序列化,我们先来看看代码:
我们先获取cookies,然后再转为dict对象,最后将dict转化为JSON对象保存起来!
2.读取cookies
读取cookies就是将文件转转化为cookies对象,这一步叫反序列化,直接上代码:
其实反序列化就是与序列化的步骤相反,先将文件转化为dict对象,然后再转化为cookies对象,最后赋值给Session对象!
3.检查cookies
这一步我们需要先判断cookies文件是否存在,如果存在则读取cookies,之后再访问淘宝主页看看是否能成功,如果失败则说明cookies已过期,我们就删除cookies文件。
重构代码
功能点实现之后我们看看怎么重构代码,根据流程图,我们需要在方法开头增加加载cookies的功能,再最后登录成功的时候增加保存cookies的方法,所以改动只有两处!
功能测试
在我们实际开发工作中 ,测试是一项非常重要的步骤。一般开发都需要先自测,如果不自测就直接提测的话,测试测出Bug你不仅会被怼被鄙视有些公司还会影响你的KPI。
我们来说说序列化cookies功能自测的流程吧:
首先我们登录,看看登录成功会不会将cookies保存为文件,这一步是测试序列化;
然后我们再登录一次,根据打印信息,看看是不是直接读取cookies文件登录的,这一步测试反序列化;
最后我们测试当cookies过期之后,会不会删除cookies文件,然后使用用户名密码登录,最后保存新的cookies文件。
1.测试正常登录
第一次登录是没有cookies文件的,所以正常使用用户名和密码登录,登录成功后保存cookies文件。
2.测试加载cookies登录
在正常登录之后,保存了cookeis文件,这里我们要测试是否能成功加载文件中的cookies:
3.测试cookies过期
大家都知道cookies都会有一个过期时间,而经过测试淘宝登录的过期时间大概为60分钟!cookies过期之后我们需要重新登录然后重新保存cookeis文件。
至此所有的功能点 已经自测完毕,这时候就可以提测给测试人员,而测试人员测试通过之后,便可以上预发环境测试,预发测试通过之后才是正式环境!
现在很多公司发布策略都是:小功能都在白天发布了,而比较大的改版还是会安排在深夜,用户少的时候!
总结
今天我们学习了如何保存登录信息,下期我将会教大家如何爬取淘宝商品信息并做数据分析,还是挺有意思的,期待吧!
看到很多同学会在学习群里交流一些以前写的案例,感觉自己做的这些教程有意义,看到大家在学习,我心里超开心。
源码:https://github.com/pig6/login_taobao
马云谈 5G 危机;腾讯推出车载版微信;Ant Design 3.22.1 发布 | 极客头条
漫画:什么是旅行商问题?返回搜狐,查看更多
责任编辑:
python 登陆淘宝_如何用 Python 自动登录淘宝并保存登录信息?相关推荐
- python爬虫抢火车票_如何用python写一个简单的12306抢票软件|python 爬火车票 教程...
python 如果抓取验证码图片 类似12306的登录验证码图片 这个以前做次.最大的麻烦是码的识别算法的识别率太低.12306那种网站登陆错3次就限制你20分钟.所以除非你有33%以上的识别率否则不 ...
- python 矩阵运算 for循环_如何用 Python 科学计算中的矩阵替代循环
展开全部 因为在Mathematica中使用循环确实是低效的.32313133353236313431303231363533e78988e69d8331333361313961..... 深层次的原 ...
- python搭建自动化测试平台_如何用python语言搭建自动化测试环境
原标题:如何用python语言搭建自动化测试环境 技术分享:基于Python语言的Web自动化测试环境搭建 近期发现很多初学者在学习自动化的过程当中,在环境安装环节总是出现问题,所以详细的出一篇环境搭 ...
- 如何制作python检查小软件_如何用Python制作整蛊小程序
原标题:如何用Python制作整蛊小程序 下面的整蛊程序,千万不要发代码,否则就实现不了你整蛊的目的了.完成后一定要打包成一个exe程序,再发给朋友使用 . 1. 使用 pip install pyi ...
- python rest api 测试_如何用Python编写REST API的单元测试
在过去的几个月中,正在从事一个名为B的项目.它是带有简单Web UI的徽章生成器,用于添加数据并生成PDF可打印徽章.B后端现在已转移到REST-API并测试REST-API中使用的功能,我们需要一些 ...
- python的out模式_如何用python中的DataFrame列的模式替换NA值?
我对Python(和本网站)完全陌生,目前正试图用它们的模式替换特定数据帧列中的NA值.我试过了各种不起作用的方法.请帮我看看我做错了什么:如何用python中的DataFrame列的模式替换NA值? ...
- 用python做一张图片_如何用python下载一张图片
如何用python下载一张图片 这里要用到的主要工具是requests这个工具,需要先安装这个库才能使用,该库衍生自urllib这个库,但是要比它更好用.多数人在做爬虫的时候选择它,是个不错的选择. ...
- 用python处理excel表格_如何用python处理excel数据 | 用python处理excel表格数据类型
python 读取EXCEL文件中的数据格式 扩展库 xlrd 读excle xlwt 写excle 直上搜就能下载 下载后使用 import xlrd 就可以读excle了 打开文件: xls = ...
- python turtle画动物_如何用python画简单的动物
首先来看一下实现效果,如下图:程序猿的生活:Python入门到精通资料大汇总,不啰嗦,全是珍藏资料!zhuanlan.zhihu.com 具体实现代码请看: # -*- coding:utf-8 - ...
最新文章
- Linux环境PHP7.0安装
- NSCoding 的作用
- RegionServer宕机的原因
- MFC子对话框初始化问题_从一个“断言”报警说起
- 第二轮“双一流”名单:这 44 所高校有调整!
- 深圳内推 | 腾讯优图实验室招聘计算机视觉算法工程师(校招/实习)
- Java——Arrays类操作数组的工具类
- 疲劳驾驶样本集_谷歌AI最新3D数据集,1.5万张动图,让AR主宰你的生活
- Java Web学习总结(20)——基于ZooKeeper的分布式session实现
- 同步与异步阻塞与非阻塞
- jQuery九宫格鼠标悬停动画效果
- Django 模板层
- pymongo访问数据前数据库名和集合名(表名)校验
- matlab直流电机pid调速仿真,直流电机双闭环PID调速系统仿真设计
- QTabWidget 删除tab
- 学生端伽卡他彻底卸载
- Linux从入门到放弃 k8s 安装部署
- Launcher 的启动
- 小学计算机打字比赛简报,育瑞实验小学打字比赛活动通知
- Mycat-配置详解
热门文章
- xmind是什么软件,免费吗
- 深度学习 神经网络(5)逻辑回归二分类-Pytorch实现乳腺癌预测
- 【JavaScript 教程】浏览器—浏览器环境概述
- 论文笔记 -SNIP 基于灵敏度的单次网络剪枝
- Qt程序运行到Symbian手机上
- Elasticsearch全文搜索引擎,从0到0.6
- discuz手机端默forum.php,Discuz! X3.4默认模板自适应手机与pc的方法
- 小知识-为什么Linux不需要磁盘碎片整理
- 流媒体协议介绍(RTP/RTCP/RTSP/MMS/HLS/HTTP progressive streaming)
- used fertilizer grinding mill