人在學校,身不由己。總有一些奇奇怪怪的學習任務,需要我們刷夠一定的時長去完成,但這很多都是不太令人感興趣的文字或是**,而這些課都有共同的特點就是會間隔一定時間發出彈窗,確認螢幕前的我們是否還kobkrkpql在瀏覽頁面。每次靠人工去點選,會嚴重影響我們做其他正事的效率。
最近小李也需要刷夠一定的學習時長。於是乎,我便找了好兄弟python來幫忙。下面我們就用python來實現自動化刷課吧!
說到自動化,selenium這個瀏覽器自動化測試框架就派上了用場,整個自動刷課的主角便是它。
**登入
那麼為了實現自動刷課,我們需要先實現**登入,才能在指定的賬號內進行操作。常規的,我們需要在對應的位置,找到網頁上對應的元素,並通過程式寫入。
而這裡有個相對麻煩的東西,即驗證碼,而這個驗證碼是白底黑字,是簡單的字母數字形式,自然而然地就想到了python的ocr庫 tesserocr 。
把**登入介面的驗證碼**下來,呼叫 tesserocr 進行識別。輸出result 即為讀出的字串序列。
if i程式設計客棧 else:
table.append(1)
image=image.point(table,'1')
result=tesserocr.image_to_text(image)
return result
解決了驗證碼,我們直接用selenium模擬點選 登入 按鈕,便完成了登入過程。
進入課程
我們需要進入的是這個實驗室准入頁面,完成相關課程的學習。
在編寫**的過程中一直遇到報錯,資訊如下:elementnotinteractableexception ,即這個頁面元素不能互動。我一度懷疑這個元素是因為 style 裡的display屬性設定成了non程式設計客棧e。經過觀察發現,這個元素並沒有隱藏。
在面向google程式設計中我發現了問題的所在,有大佬總結了這一類錯誤發生的原因。
首先檢視是否需要切換 iframe, 然後看看是否需要用js的方法來scroll滾動條,接著看看是否需要加等待時間,最後check下這個元素是否是可以點選的。
因為selenium操作頁面切換可能沒有那麼塊,sleep延時一下等頁面切換了再進行元素的查詢。
彈出框處理
問題解決之後我們就來到了課程學習的頁面。
而這個頁面每個5分鐘就會彈出提醒框,然後暫停課程的學習,因此我們需要利用selenium自動完成關閉提醒框的操作。
def answer_confirm(self):
# 每隔5分鐘彈出確認視窗
count=1
while 1:
try:
confirm=self.browser.switch_to_alert()
print(confirm.text)
confirm.accept()
print("您已經完成時長為{}分鐘的閱讀!".format(count*5))
count+=1
time.sleep(300)
except:
time.sleep(2)
這樣我們的程式就可以操作瀏覽器並完成一定時長的學習任務啦~
總結本文標題: 利用python指令碼實現自動刷網課
本文位址:
利用shell指令碼自動執行python程式
shell 是乙個用 c 語言編寫的程式,它是使用者使用 linux 的橋梁。shell 既是一種命令語言,又是一種程式語言.shell 是指一種應用程式,這個應用程式提供了乙個介面,使用者通過這個介面訪問作業系統核心的服務.shell 指令碼 shell script 是一種為 shell 編寫的...
實現自動git push的python指令碼
os實現免密登入的方法 關於作者 我想用python指令碼實現自動push,首先我有乙個完整的code但是我想每天都執行一次,並將執行之後專案的改變進行 push 更新。解決思路 模擬 git add commit m push 的過程 解決免密push的問題 整合需求編寫 開始介紹前,先設定好自己...
shell指令碼利用rman實現自動備份資料庫
b backup path l backup level with 0 full or 1 incremental s the user sys pawword 不利用引數則採用預設,預設備份路徑為 oracle base flash recovery area orcl backupset 備份預...