1. 程式人生 > 實用技巧 >Python小程式刷學習通課程的訪問量

Python小程式刷學習通課程的訪問量

1、前提

本學期選了學習通的網課,無奈老師要求課程的訪問量要達到300次,可是時間來不及了,於是決定用程式碼來幫我完成任務:

2、準備工作

①確保是python3版本,下載有selenium庫,需要使用谷歌瀏覽器

②selenium 爬蟲報錯:Message: 'chromedriver' executable needs to be in PATH.解決辦法

這裡的報錯說明沒有安裝谷歌瀏覽器驅動

解決方法:
https://blog.csdn.net/su_2018/article/details/100127223?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

③提前獲取學習介面的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()