Python小程序刷超星学习通课程的访问量


1、前提

本学期选了学习通的网课,无奈老师要求课程的访问量要达到300次,可是时间来不及了,于是决定用代码来帮我完成任务。

任务要求

2、准备工作

①确保是python3版本,下载有selenium库,需要使用谷歌浏览器

②selenium 爬虫报错:Message: 'chromedriver' executable needs to be in PATH.的解决办法

这里的报错说明没有安装谷歌浏览器驱动

解决方法:
https://blog.csdn.net/su_2018/article/details/100127223

③提前获取学习界面的url链接

④浏览器打开时,最上面要允许加载驱动,第一次登入需要手动输入账号和密码

3、Python代码

代码中有2处需要更改。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()

参考资料:https://blog.csdn.net/qq_41205771/article/details/103625643


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM