前段时间时间为你们讲解了如何使用requests库模拟登陆淘宝,而今天咱们将对该功能进行丰富。因此咱们把以前的那个版本定为1.0,而今天修改的版本定为2.0。版本的地跌意味着功能的升级,那今天的2.0版本较以前的1.0版本有哪些改进呢?咱们一块儿来看看!面试
咱们先来回顾一下模拟登陆淘宝的步骤吧,咱们仍是先看看淘宝登陆的详细时序图:
json
这是淘宝网登陆的一个请求流程,而咱们模拟登陆也是根据这样的一个流程。可是在代码模拟登陆的时候就不会分的这么细,咱们根据封装的思想将整个登陆流程封装在四个方法里面,能够看看下图。
浏览器
为了便于你们理解四步登陆法,猪哥又画了一个流程图给你们看看
cookie
结合流程图,给你们简单 的 再讲解一遍这四步具体作了啥:post
在面试的 时候也许面试官会问你是否爬取或自动登陆过淘宝,流程是怎么的?你们 就这个把这个四步登陆法讲给面试官听 ,面试官不只不会你的技术承认,也为夸张你的逻辑思惟缜密!学习
为何要作2.0版本?由于猪哥在作爬取淘宝商品的时候发现以前登陆有一个很不方便的 地方:每次程序运行完后,登陆的cookies就没了,也就是说下次又要从新登陆。测试
而浏览器却能够保存cookies信息,因此猪哥天然的想到了:将cookies序列化。3d
序列化 (Serialization)是将对象的状态信息转换为能够存储或传输的形式的过程。——百度百科对象
简单说序列化就是将对象持久性保存起来,由于原来对象是在内存中,程序运行完了就要释放内存,全部的对象、变量等都会被清除,而序列化则能够把他们保存到文件。即便程序关闭了,下次启动的时候能够读取文件到内存转回对象继续使用,而这个过程叫反序列化。blog
因此咱们2.0的功能就是:将登陆后的cookies保存到文件中,下次再登陆先从cookies文件读取!也就是增长了一个保存cookies 的功能,咱们再看看2.0的流程图。
与1.0的流程图相比,其实就多了左边的cookies文件和cookies文件的校验,这也就是咱们今天要讲的内容!
别看只是增长了一点点功能,却意义重大:由于这是一个 授人予渔的功能,你学会以后其余全部的登陆均可以作序列化保存cookies,并且还能够作cookies池!
根据上面的流程图,咱们能够简单的分析量化一下增长的保存cookies这个共功能:
根据以上三步,咱们就能够开始撸代码了
保存cookies其实就叫序列化,咱们先来看看代码:
咱们先获取cookies,而后再转为dict对象,最后将dict转化为json对象保存起来!
读取cookies就是将文件转转化为cookies对象,这一步叫反序列化,直接上代码:
其实反序列化就是与序列化的步骤相反,先将文件转化为dict对象,而后再转化为cookies对象,最后赋值给Session对象!
这一步咱们须要先判断cookies文件是否存在,若是存在则读取cookies,以后再访问淘宝主页看看是否能成功,若是失败则说明cookies已过时,咱们就删除cookies文件。
功能点实现以后咱们看看怎么重构代码,根据流程图,咱们须要在方法开头增长加载cookies的功能,再最后登陆成功的时候增长保存cookies的方法,因此改动只有两处!
在咱们实际开发工做中 ,测试是一项很是重要的步骤。通常开发都须要先自测,若是不自测就直接提测的话,测试测出bug你不只会被怼被鄙视有些公司还会影响你的kpi。
咱们来讲说序列化cookies功能自测的流程吧:
第一次登陆是没有cookies文件的,因此正常使用用户名和密码登陆,登陆成功后保存cookies文件。
再正常登陆以后,保存了cookeis文件,这里咱们要测试是否能成功加载文件中的cookies。
你们都知道cookies都会有一个过时时间,而通过猪哥测试淘宝登陆的过时时间为xx分钟!cookies过时以后咱们须要从新登陆而后从新保存cookeis文件。
至此全部的功能点 已经自测完毕,这时候就能够提测给测试人员,而测试人员测试经过以后,即可以上预发环境测试,预发测试经过以后才是正式环境!
如今通常的小功能都在白天发布了,而比较大的改版仍是会安排在深夜,用户少的时候!
今天咱们学习了如何保存登陆信息,下期猪哥将会教你们如何爬取淘宝商品信息并作数据分析,仍是挺有意思的,期待吧!
看到不少同窗会在学习群里交流一些猪哥之前写的案例,感受本身作的这些教程有意义,看到你们在学习,猪哥内心超开心!
获取淘宝自动登陆源码,请关注vx公众号「裸睡的猪」回复 淘宝登陆