Python 自動(dòng)登錄淘寶并保存登錄信息的方法
前段時(shí)間時(shí)間為大家講解了如何使用requests庫模擬登錄淘寶,而今天我們將對(duì)該功能進(jìn)行豐富。所以我們把之前的那個(gè)版本定為1.0,而今天修改的版本定為2.0。版本的迭代意味著功能的升級(jí),那今天的2.0版本較之前的1.0版本有哪些改進(jìn)呢?我們一起來看看!
1.0版本實(shí)現(xiàn)步驟
我們先來回顧一下模擬登錄淘寶的步驟吧,我們還是先看看淘寶登錄的詳細(xì)時(shí)序圖:
這是淘寶網(wǎng)登錄的一個(gè)請(qǐng)求流程,而我們模擬登錄也是根據(jù)這樣的一個(gè)流程。但是在代碼模擬登錄的時(shí)候就不會(huì)分的這么細(xì),我們根據(jù)封裝的思想將整個(gè)登錄流程封裝在四個(gè)方法里面,可以看看下圖。
為了便于大家理解四步登錄法,我又畫了一個(gè)流程圖給大家看看:
結(jié)合流程圖,給大家簡(jiǎn)單 的 再講解一遍這四步具體做了啥:
- 拿著用戶名向淘寶(taobao.com)發(fā)起一個(gè)post的請(qǐng)求,判斷是否出現(xiàn)滑塊驗(yàn)證。
- 向淘寶(taobao.com)又發(fā)起一個(gè)post請(qǐng)求,驗(yàn)證用戶名密碼是否正確,如果正確則返回一個(gè)token。
- 拿著token去阿里巴巴(alibaba.com)交換st碼。
- 獲取st碼之后,拿著st碼獲取cookies,登錄成功。
在面試的時(shí)候也許面試官會(huì)問你是否爬取或自動(dòng)登錄過淘寶,流程是怎么的?大家就這個(gè)把這個(gè)四步登錄法講給面試官聽 ,面試官不僅不會(huì)你的技術(shù)認(rèn)可,也為認(rèn)可你的邏輯思維縝密!
2.0版本新增功能
為什么要做2.0版本?因?yàn)槲以谧雠廊√詫毶唐返臅r(shí)候發(fā)現(xiàn)之前登錄有一個(gè)很不方便的 地方:每次程序運(yùn)行完后,登錄的cookies就沒了,也就是說下次又要重新登錄。
而瀏覽器卻可以保存cookies信息,所以我自然地想到了:將cookies序列化。
序列化 (Serialization)是將對(duì)象的狀態(tài)信息轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)男问降倪^程。——百度百科
簡(jiǎn)單說序列化就是將對(duì)象持久性保存起來,因?yàn)樵瓉韺?duì)象是在內(nèi)存中,程序運(yùn)行完了就要釋放內(nèi)存,所有的對(duì)象、變量等都會(huì)被清除,而序列化則可以把他們保存到文件。即使程序關(guān)閉了,下次啟動(dòng)的時(shí)候可以讀取文件到內(nèi)存轉(zhuǎn)回對(duì)象繼續(xù)使用,而這個(gè)過程叫反序列化。
所以我們2.0的功能就是:將登錄后的cookies保存到文件中,下次再登錄先從cookies文件讀??!也就是增加了一個(gè)保存cookies 的功能,我們?cè)倏纯?.0的流程圖。
與1.0的流程圖相比,其實(shí)就多了左邊的cookies文件和cookies文件的校驗(yàn),這也就是我們今天要講的內(nèi)容!
別看只是增加了一點(diǎn)點(diǎn)功能,卻意義重大:因?yàn)檫@是一個(gè) 授人予漁的功能,你學(xué)會(huì)之后其他所有的登錄都可以做序列化保存cookies,而且還可以做cookies池!
2.0版本新功能實(shí)現(xiàn)
根據(jù)上面的流程圖,我們可以簡(jiǎn)單的分析量化一下增加的保存cookies這個(gè)共功能:
保存cookies:增加一個(gè)方法,當(dāng)使用st碼登錄成功后,用來將cookies對(duì)象轉(zhuǎn)化為文件
讀取cookies:增加一個(gè)方法,用來讀取cookies文件,將它轉(zhuǎn)化為cookies對(duì)象
檢查cookies:增加一個(gè)方法,用來判斷cookies是否失效,如果失效則刪除cookies文件,如果有效則直接登錄成功!
根據(jù)以上三步,我們就可以開始擼代碼了
1.保存cookies
保存cookies其實(shí)就叫序列化,我們先來看看代碼:
我們先獲取cookies,然后再轉(zhuǎn)為dict對(duì)象,最后將dict轉(zhuǎn)化為JSON對(duì)象保存起來!
2.讀取cookies
讀取cookies就是將文件轉(zhuǎn)轉(zhuǎn)化為cookies對(duì)象,這一步叫反序列化,直接上代碼:
其實(shí)反序列化就是與序列化的步驟相反,先將文件轉(zhuǎn)化為dict對(duì)象,然后再轉(zhuǎn)化為cookies對(duì)象,最后賦值給Session對(duì)象!
3.檢查cookies
這一步我們需要先判斷cookies文件是否存在,如果存在則讀取cookies,之后再訪問淘寶主頁看看是否能成功,如果失敗則說明cookies已過期,我們就刪除cookies文件。
重構(gòu)代碼
功能點(diǎn)實(shí)現(xiàn)之后我們看看怎么重構(gòu)代碼,根據(jù)流程圖,我們需要在方法開頭增加加載cookies的功能,再最后登錄成功的時(shí)候增加保存cookies的方法,所以改動(dòng)只有兩處!
功能測(cè)試
在我們實(shí)際開發(fā)工作中 ,測(cè)試是一項(xiàng)非常重要的步驟。一般開發(fā)都需要先自測(cè),如果不自測(cè)就直接提測(cè)的話,測(cè)試測(cè)出Bug你不僅會(huì)被懟被鄙視有些公司還會(huì)影響你的KPI。
我們來說說序列化cookies功能自測(cè)的流程吧:
首先我們登錄,看看登錄成功會(huì)不會(huì)將cookies保存為文件,這一步是測(cè)試序列化;
然后我們?cè)俚卿浺淮?,根?jù)打印信息,看看是不是直接讀取cookies文件登錄的,這一步測(cè)試反序列化;
最后我們測(cè)試當(dāng)cookies過期之后,會(huì)不會(huì)刪除cookies文件,然后使用用戶名密碼登錄,最后保存新的cookies文件。
1.測(cè)試正常登錄
第一次登錄是沒有cookies文件的,所以正常使用用戶名和密碼登錄,登錄成功后保存cookies文件。
2.測(cè)試加載cookies登錄
在正常登錄之后,保存了cookeis文件,這里我們要測(cè)試是否能成功加載文件中的cookies:
3.測(cè)試cookies過期
大家都知道cookies都會(huì)有一個(gè)過期時(shí)間,而經(jīng)過測(cè)試淘寶登錄的過期時(shí)間大概為60分鐘!cookies過期之后我們需要重新登錄然后重新保存cookeis文件。
至此所有的功能點(diǎn) 已經(jīng)自測(cè)完畢,這時(shí)候就可以提測(cè)給測(cè)試人員,而測(cè)試人員測(cè)試通過之后,便可以上預(yù)發(fā)環(huán)境測(cè)試,預(yù)發(fā)測(cè)試通過之后才是正式環(huán)境!
現(xiàn)在很多公司發(fā)布策略都是:小功能都在白天發(fā)布了,而比較大的改版還是會(huì)安排在深夜,用戶少的時(shí)候!
總結(jié)
今天我們學(xué)習(xí)了如何保存登錄信息,下期我將會(huì)教大家如何爬取淘寶商品信息并做數(shù)據(jù)分析,還是挺有意思的,期待吧!
看到很多同學(xué)會(huì)在學(xué)習(xí)群里交流一些以前寫的案例,感覺自己做的這些教程有意義,看到大家在學(xué)習(xí),我心里超開心。
源碼:https://github.com/pig6/login_taobao
以上所述是小編給大家介紹的使用Python 自動(dòng)登錄淘寶并保存登錄信息的方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
- python爬取企查查企業(yè)信息之selenium自動(dòng)模擬登錄企查查
- python3定位并識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)自動(dòng)登錄功能
- Appium+Python實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)化登錄測(cè)試的實(shí)現(xiàn)
- Python模擬鍵盤輸入自動(dòng)登錄TGP
- Python內(nèi)置函數(shù)hex()的實(shí)現(xiàn)示例
- Python 實(shí)現(xiàn)自動(dòng)登錄+點(diǎn)擊+滑動(dòng)驗(yàn)證功能
- python自動(dòng)化實(shí)現(xiàn)登錄獲取圖片驗(yàn)證碼功能
- python實(shí)現(xiàn)網(wǎng)站用戶名密碼自動(dòng)登錄功能
- python爬蟲之利用selenium模塊自動(dòng)登錄CSDN
相關(guān)文章
Python程序打包exe報(bào)錯(cuò)的幾種解決方法
本文主要介紹了Python程序打包exe報(bào)錯(cuò)的幾種解決方法,文中通過幾種解決方法的介紹非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2023-08-08Python實(shí)現(xiàn)尋找回文數(shù)字過程解析
這篇文章主要介紹了Python實(shí)現(xiàn)尋找回文數(shù)字過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06Django配置kafka消息隊(duì)列的實(shí)現(xiàn)
本文主要介紹了Django配置kafka消息隊(duì)列的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05Python json格式化打印實(shí)現(xiàn)過程解析
這篇文章主要介紹了Python json格式化打印實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07Python使用turtle繪制有趣的龍年祝福動(dòng)畫
這篇文章主要介紹了Python的內(nèi)置庫——小海龜(turtle),它是一個(gè)非常實(shí)用的繪畫工具,不僅可以幫助我們繪制圖形,還能讓我們查看整個(gè)繪畫過程,下面我們就來看看如何使用turtle繪制有趣的龍年祝福動(dòng)畫吧2024-01-01Python的speech_recognition庫如何將聲音轉(zhuǎn)為文字
這篇文章主要介紹了通過Python的speech_recognition庫將聲音轉(zhuǎn)為文字,將聲音轉(zhuǎn)為文字,除了speech_recognition庫,還要依賴pyaudio庫,而且mac用戶需要安裝PortAudio,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05Python Pandas高級(jí)教程之時(shí)間處理
我們發(fā)現(xiàn)關(guān)于時(shí)間日期的簡(jiǎn)單計(jì)算很多功能都是datetime庫提供的,那么pandas有沒有提供跟日期時(shí)間有關(guān)的函數(shù),通過下面文章來了解下,這篇文章主要給大家介紹了關(guān)于Python Pandas高級(jí)教程之時(shí)間處理的相關(guān)資料,需要的朋友可以參考下2021-10-10