日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

如何用 Python 自動登錄淘寶并保存登錄信息?

系統 1803 0

640?wx_fmt=gif

640?wx_fmt=jpeg

作者 |?豬哥

責編?| 伍杏玲

前段時間時間為大家講解了如何使用requests庫模擬登錄淘寶,而今天我們將對該功能進行豐富。所以我們把之前的那個版本定為1.0,而今天修改的版本定為2.0。版本的迭代意味著功能的升級,那今天的2.0版本較之前的1.0版本有哪些改進呢?我們一起來看看!

?

?

640?wx_fmt=png

1.0版本實現步驟

?

我們先來回顧一下模擬登錄淘寶的步驟吧,我們還是先看看淘寶登錄的詳細時序圖:

640?wx_fmt=png

這是淘寶網登錄的一個請求流程,而我們模擬登錄也是根據這樣的一個流程。但是在代碼模擬登錄的時候就不會分的這么細,我們根據封裝的思想將整個登錄流程封裝在四個方法里面,可以看看下圖。

640?wx_fmt=png

為了便于大家理解四步登錄法,我又畫了一個流程圖給大家看看:

640?wx_fmt=png

結合流程圖,給大家簡單 的 再講解一遍這四步具體做了啥:

  1. 拿著用戶名向淘寶(taobao.com)發起一個post的請求,判斷是否出現滑塊驗證。

  2. 向淘寶(taobao.com)又發起一個post請求,驗證用戶名密碼是否正確,如果正確則返回一個token。

  3. 拿著token去阿里巴巴(alibaba.com)交換st碼。

  4. 獲取st碼之后,拿著st碼獲取cookies,登錄成功。

在面試的時候也許面試官會問你是否爬取或自動登錄過淘寶,流程是怎么的?大家就這個把這個四步登錄法講給面試官聽 ,面試官不僅不會你的技術認可,也為認可你的邏輯思維縝密!

?

?

640?wx_fmt=png

2.0版本新增功能

?

為什么要做2.0版本?因為我在做爬取淘寶商品的時候發現之前登錄有一個很不方便的 地方:每次程序運行完后,登錄的cookies就沒了,也就是說下次又要重新登錄。

而瀏覽器卻可以保存cookies信息,所以我自然地想到了:將cookies序列化。

序列化 (Serialization)是將對象的狀態信息轉換為可以存儲或傳輸的形式的過程。——百度百科

簡單說序列化就是將對象持久性保存起來,因為原來對象是在內存中,程序運行完了就要釋放內存,所有的對象、變量等都會被清除,而序列化則可以把他們保存到文件。即使程序關閉了,下次啟動的時候可以讀取文件到內存轉回對象繼續使用,而這個過程叫反序列化。

所以我們2.0的功能就是:將登錄后的cookies保存到文件中,下次再登錄先從cookies文件讀取!也就是增加了一個保存cookies 的功能,我們再看看2.0的流程圖。

640?wx_fmt=png

與1.0的流程圖相比,其實就多了左邊的cookies文件和cookies文件的校驗,這也就是我們今天要講的內容!

別看只是增加了一點點功能,卻意義重大:因為這是一個 授人予漁的功能,你學會之后其他所有的登錄都可以做序列化保存cookies,而且還可以做cookies池!

?

?

640?wx_fmt=png

2.0版本新功能實現

?

根據上面的流程圖,我們可以簡單的分析量化一下增加的保存cookies這個共功能:

  1. 保存cookies:增加一個方法,當使用st碼登錄成功后,用來將cookies對象轉化為文件

  2. 讀取cookies:增加一個方法,用來讀取cookies文件,將它轉化為cookies對象

  3. 檢查cookies:增加一個方法,用來判斷cookies是否失效,如果失效則刪除cookies文件,如果有效則直接登錄成功!

根據以上三步,我們就可以開始擼代碼了

1.保存cookies

保存cookies其實就叫序列化,我們先來看看代碼:
640?wx_fmt=png

我們先獲取cookies,然后再轉為dict對象,最后將dict轉化為JSON對象保存起來!

2.讀取cookies

讀取cookies就是將文件轉轉化為cookies對象,這一步叫反序列化,直接上代碼:

640?wx_fmt=jpeg

其實反序列化就是與序列化的步驟相反,先將文件轉化為dict對象,然后再轉化為cookies對象,最后賦值給Session對象!

3.檢查cookies

這一步我們需要先判斷cookies文件是否存在,如果存在則讀取cookies,之后再訪問淘寶主頁看看是否能成功,如果失敗則說明cookies已過期,我們就刪除cookies文件。

640?wx_fmt=jpeg

?

?

640?wx_fmt=png

重構代碼

?

功能點實現之后我們看看怎么重構代碼,根據流程圖,我們需要在方法開頭增加加載cookies的功能,再最后登錄成功的時候增加保存cookies的方法,所以改動只有兩處!

640?wx_fmt=jpeg

?

?

640?wx_fmt=png

功能測試

?

在我們實際開發工作中 ,測試是一項非常重要的步驟。一般開發都需要先自測,如果不自測就直接提測的話,測試測出Bug你不僅會被懟被鄙視有些公司還會影響你的KPI。

我們來說說序列化cookies功能自測的流程吧:

  1. 首先我們登錄,看看登錄成功會不會將cookies保存為文件,這一步是測試序列化;

  2. 然后我們再登錄一次,根據打印信息,看看是不是直接讀取cookies文件登錄的,這一步測試反序列化;

  3. 最后我們測試當cookies過期之后,會不會刪除cookies文件,然后使用用戶名密碼登錄,最后保存新的cookies文件。

1.測試正常登錄

第一次登錄是沒有cookies文件的,所以正常使用用戶名和密碼登錄,登錄成功后保存cookies文件。

640?wx_fmt=png

2.測試加載cookies登錄

在正常登錄之后,保存了cookeis文件,這里我們要測試是否能成功加載文件中的cookies:

640?wx_fmt=jpeg

3.測試cookies過期

大家都知道cookies都會有一個過期時間,而經過測試淘寶登錄的過期時間大概為60分鐘!cookies過期之后我們需要重新登錄然后重新保存cookeis文件。

640?wx_fmt=jpeg

至此所有的功能點 已經自測完畢,這時候就可以提測給測試人員,而測試人員測試通過之后,便可以上預發環境測試,預發測試通過之后才是正式環境!

現在很多公司發布策略都是:小功能都在白天發布了,而比較大的改版還是會安排在深夜,用戶少的時候!

?

?

640?wx_fmt=png

總結

?

今天我們學習了如何保存登錄信息,下期我將會教大家如何爬取淘寶商品信息并做數據分析,還是挺有意思的,期待吧!

看到很多同學會在學習群里交流一些以前寫的案例,感覺自己做的這些教程有意義,看到大家在學習,我心里超開心。

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

【END】

Python的學習方式

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

640?wx_fmt=jpeg

?熱 文 ?推 薦?

?馬云談 5G 危機;騰訊推出車載版微信;Ant Design 3.22.1 發布 | 極客頭條

?漫畫:什么是旅行商問題?

程序員易踩的 9 大坑!

?公開課 | 如何用圖譜挖掘商業數據背后的寶藏?

?開學了,復旦老師教你如何玩轉“0”“1”浪漫!| 人物志

?與曠視、商湯等上百家企業同臺競技?AI Top 30+案例評選等你來秀!

?“根本就不需要 Kafka 這樣的大型分布式系統!”

?他是葉問制片人也是紅色通緝犯, 他讓泰森卷入ICO, 卻最終演變成了一場狗血的羅生門……

?如何寫出讓同事無法維護的代碼?

?

?

?

?

?

640?wx_fmt=png

你點的每個“在看”,我都認真當成了喜歡


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 家居| 嘉荫县| 玛纳斯县| 彰化市| 蒙山县| 洪雅县| 金秀| 开江县| 德安县| 旬阳县| 英超| 金沙县| 潢川县| 右玉县| 新龙县| 泗洪县| 从江县| 吴忠市| 泊头市| 荔浦县| 子长县| 如东县| 阳春市| 布拖县| 汉阴县| 红河县| 贺州市| 耒阳市| 怀集县| 比如县| 岗巴县| 炎陵县| 商水县| 肃宁县| 尼木县| 德庆县| 视频| 敦化市| 临猗县| 合山市| 嵊泗县|