Python小程式刷學習通課程的訪問量
阿新 • • 發佈:2020-10-12
1、前提
本學期選了學習通的網課,無奈老師要求課程的訪問量要達到300次,可是時間來不及了,於是決定用程式碼來幫我完成任務:
2、準備工作
①確保是python3版本,下載有selenium庫,需要使用谷歌瀏覽器
②selenium 爬蟲報錯:Message: 'chromedriver' executable needs to be in PATH.解決辦法
這裡的報錯說明沒有安裝谷歌瀏覽器驅動
③提前獲取學習介面的url連結
3、Python程式碼
程式碼中只需要更改main方法中starturl = ""裡面的學習頁面連結
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time,os,json #1、確保下載有selenium庫 #2、下載瀏覽器驅動,配置到系統環境變數 def login(D, starturl): print("首次登入,請在瀏覽器手動登入!") D.get(starturl) WebDriverWait(D, 1000).until( EC.url_to_be(starturl) ) with open("cookies.json", "w", encoding="utf-8") as f: json.dump(D.get_cookies(), f) def main(): ft = float(input("請輸入重新整理頻率(0.1 - 10)建議直接輸入1:")) # starturl = input("請輸入課程首頁連結:") 【個人使用可以不需要每次輸入,用下面的方法】 #starturl = "" 輸入學習介面url,下面的連結是個例子,請自己更改 starturl = "https://mooc1-1.chaoxing.com/mycourse/studentstudy?chapterId=351756254&courseId=214546396&clazzid=32891167&enc=8d165633ae6df57cfd1b7200602ee150" #'F:\Google Chrome x64\chromedriver.exe'是驅動地址 D = webdriver.Chrome(r'F:\Google Chrome x64\chromedriver.exe') if os.path.exists("cookies.json"): print("自動登入ing...") D.get(starturl) with open("cookies.json", "r", encoding="utf-8") as f: for cookie in json.load(f): if "expiry" in cookie: del cookie['expiry'] D.add_cookie(cookie) D.get(starturl) if D.current_url == starturl:print("自動登入成功!") else: login(D, starturl) else: login(D, starturl) while True: cells = D.find_elements_by_class_name("cells") if D.current_url!=starturl: print("被攔截啦!請輸入驗證碼繼續操作") WebDriverWait(D, 1000).until( EC.url_to_be(starturl) ) for cell in cells: try: cel = cell.find_elements_by_class_name("ncells") for ce in cel: time.sleep(ft) print(ce.text) ce.click() except: #請忽略此行D.get("https://mooc1-1.chaoxing.com/mycourse/studentstudy?chapterId=351756266&courseId=214546396&clazzid=32891167&enc=a7b0bf6be9aae494a195a0a98b57b414") D.get(starturl) break #可選擇手動關閉 #D.close() if __name__ == "__main__": main()