python 写脚本 预约课程_Python盘纪念币系列之三:自动预约脚本编写 03 系列总结...
前一篇遺漏了“預約兌換日期”的自動輸入,這篇文章將介紹如何處理。另外,將會對“Python盤紀念幣系列”做一個簡單的總結。
自動輸入預約兌換日期
不像文本輸入框和下拉選擇框,這個兌換日期元素點擊之后會出現一個日期選擇控件,看起來確實比前兩者難以處理,不知道從何下手。
其實還是一樣的,我們一步一步來處理。
在這之前,發現代碼中有大量的重復語句,于是將這些語句挑出來寫成獨立的方法:
def find_and_click(driver, xpath):
ele = driver.find_element_by_xpath(xpath)
ele.click()
def find_and_fill(driver, xpath, value):
ele = driver.find_element_by_xpath(xpath)
ele.send_keys(value)
他們的作用是什么相信讀者一看就能知道,函數名寫的很清楚。
那接下來肯定還是要先定位到這個文本框,定位到之后,執行點擊操作,呼出日期選擇器。一句話搞定:
find_and_click(driver, '//*[@id="coindate"]')
看著上面那個日期選擇器,似乎真的無從下手。但仔細想想,既然它能在網頁中出現,那它肯定是有對應的網頁路徑的。所以,這里來查看一下:
對應的每一個日期也都是可以索引到的:
例如,上圖中的12就可以用下面的xpath索引到:
//*[@id="ui-datepicker-div"]/table/tbody/tr[3]/td[4]/span
熟悉html的同學應該知道,
和標簽是表格符號,所以這個日期選擇器其實就是一個表格,通過對和標簽的下標進行遍歷即可找到對應的元素。如果本頁遍歷結束都還沒有找到,則點擊箭頭到下一頁繼續:而且是否可以選擇可以直接根據上面title中的“不在兌換期”判斷。
如果是可以兌換的日期,title則顯示為“可選擇”,如下:
經過上述分析,最后我們的代碼大概是這樣的:
for tr_index in range(6):
for td_index in range(7):
try:
ele_td = driver.find_element_by_xpath(
'//*[@id="ui-datepicker-div"]/table/tbody/tr[{}]/td[{}]'.format(str(tr_index + 1), str(td_index + 1)))
except:
continue
if ele_td.get_attribute('title') == '可選擇':
is_find = True
ele_td.click()
return
這樣,最后一個攔路虎也解決了,我們終于可以開開心心的盤紀念幣了。
說一句題外話,這個系列講的是預約農行的紀念幣,但其實其他銀行也是同樣的道理。我正在做工行的腳本,目前也快要完工,有需要可以公眾號后臺聯系。
盤紀念幣系列總結
說實話,我一開始也沒想到我能堅持下來寫完這一個系列。雖然不是什么很難的問題,但好歹是一步一步、一片一片、一點一點的講完了。當然,文章有不少的缺陷,有的地方可以講的細一些卻沒有精講,有些地方比較類似卻花了大量篇幅。但這些,我相信都是可以慢慢學習慢慢更正的,所以我更看重這個從0到1的質變。
題外話不多說,Python盤紀念幣系列是一個利用python語言自動在網頁上輸入信息進行紀念幣預約的系列文章。
這個系列的主要技術點有三個。
第一,利用OpenCV庫處理驗證碼圖片,分割出每一個字符;
第二,訓練神經網絡智能識別字符(當然這并不是唯一的識別驗證碼的方案);
第三,利用selenium庫自動化測試,將信息填入網頁中實現自動預約。
想要詳細了解可以翻翻這個系列的文章,如下所示。
寫完這個系列,接下來會寫一寫跟微信有關系的文章,比如說微信群機器人、微信個人輔助之類的文章。因為平時玩微信比較多,也喜歡搞一些小trick。
當然了,不管寫什么,希望能跟更多人溝通,有問題或者需求隨時歡迎交流。
我所有的源代碼都會放在下面的github倉庫里面,有需要可以參考,有問題歡迎指正,謝謝!
https://github.com/TitusWongCN/
下面是我的公眾號,有興趣可以掃一下:
總結
以上是生活随笔為你收集整理的python 写脚本 预约课程_Python盘纪念币系列之三:自动预约脚本编写 03 系列总结...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 豆腐沙拉怎么做好吃呢?
- 下一篇: 钟汉良到底多大了、怎么那么年轻?