成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

怎樣利用python完成大學(xué)刷課

本篇文章給大家分享的是有關(guān)怎樣利用python完成大學(xué)刷課,小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

我們提供的服務(wù)有:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、東光ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的東光網(wǎng)站制作公司

0x01:

首先分析一下它是怎么驗(yàn)證你看完這個(gè)課的。怎樣利用python完成大學(xué)刷課

當(dāng)學(xué)習(xí)完成時(shí)會(huì)發(fā)出這個(gè)請(qǐng)求    怎樣利用python完成大學(xué)刷課

然后看看這幾個(gè)請(qǐng)求的數(shù)據(jù)都是在前端哪里生成的怎樣利用python完成大學(xué)刷課

一番尋找就看到了是wx.js下的function finishWxCourse()  ??刂婆_(tái)執(zhí)行 finishWxCourse() 果然會(huì)發(fā)起完成修課的請(qǐng)求        怎樣利用python完成大學(xué)刷課

0x02:

然后剩下就是腳本的思路 首先要獲取課程的鏈接 然后打開(kāi)以后執(zhí)行js  finishWxCourse() 后來(lái)發(fā)現(xiàn)requests不是很好的能執(zhí)行js 然后我就聽(tīng)從了幾個(gè)師傅的意見(jiàn)用selenium...所以是邊學(xué)邊寫(xiě)的 遇到了幾個(gè)小坑記一記

安裝不表 網(wǎng)上很多教程 chromedriver裝在環(huán)境變量里面就好了 比如python的環(huán)境變量 如果遇到問(wèn)題可以留言評(píng)論

先說(shuō)一下 代碼最終的整體思路是 打開(kāi)網(wǎng)站----設(shè)置cookie----然后通過(guò)點(diǎn)擊打開(kāi)所有的隱藏元素-----定位點(diǎn)擊----后退---------------點(diǎn)擊打開(kāi)所有的隱藏元素-------定位點(diǎn)擊----------后退..然后重復(fù)之前的步驟

這是簡(jiǎn)單的啟動(dòng)瀏覽器和發(fā)起請(qǐng)求

        driver = webdriver.Chrome("C:/Python27/chromedriver.exe")
        driver.get("http://wb.mycourse.cn/")

刪除所有的cookie并設(shè)置cookie。我是手動(dòng)登陸然后再添加    有一個(gè)要記住的就是先要請(qǐng)求一次網(wǎng)頁(yè) 才能設(shè)置cookie 再請(qǐng)求網(wǎng)頁(yè)

driver.add_cookie({'name':'JSESSIONID','value':'93BEC0FDEF428F98DA1F69A6B3C2BF88'})  #已經(jīng)過(guò)期的了 師傅們driver.add_cookie({'name':'acw_tc','value':'7b39758715392684428742395e7ed4b94ed4e9616cb11d4b9df9e244ec7573'})        
driver.add_cookie({'name':'SERVERID','value':'02cc313090e3650844ab417ac43bf774|1539357767|1539357719'})
driver.get("http://wb.mycourse.cn/svnweiban/student/study_studyAndTest.action")

接著就是定位元素了 首先要看到我們要點(diǎn)擊的課程鏈接

怎樣利用python完成大學(xué)刷課

看到class屬性 有一個(gè)坑就是這里多個(gè)class屬性 不能直接多個(gè)class一起定位 不然會(huì)找到 如果全部一起定位要用css尋找并且用.來(lái)鏈接 然后我這里用的是 courseLink定位 這個(gè)名字也很明顯是做什么的。然后我也發(fā)現(xiàn)是98個(gè)課程都能定位到  前面幾個(gè)class能定位到1000多個(gè)

link2s = driver.find_elements_by_class_name("courseLink")
我原本就很開(kāi)心的以為差不多做完了準(zhǔn)備寫(xiě)出一個(gè)這樣子的代碼
        for i in range(99):
                link2s = driver.find_elements_by_class_name("courseText")
                link2s[i].click()
                driver.execute_script("finishWxCourse()")

但是結(jié)果發(fā)現(xiàn)無(wú)法獲取到元素 什么鬼 然后一直報(bào)錯(cuò)···苦苦百度以后發(fā)現(xiàn)···原來(lái)是沒(méi)有展開(kāi)元素 是diplay:none。 隱藏了 然后我百度以后找到的方法一直是 通過(guò)執(zhí)行js把none改為block結(jié)果發(fā)現(xiàn)不好定位啊

怎樣利用python完成大學(xué)刷課

<div class="widthPercent100 paddingL_30 border-box displayNone" style="transition: all 0.5s ease 0s; display: none;">

class屬性都是不唯一的 然后很蛋疼 后來(lái)師傅推薦說(shuō)通過(guò)xpath定位 可是好多個(gè) 不想嫌棄麻煩 洗了個(gè)澡回來(lái)以后發(fā)現(xiàn)可以通過(guò)定位元素 然后點(diǎn)擊元素 來(lái)實(shí)現(xiàn)自動(dòng)展開(kāi)列表

通過(guò) 前面截圖的cursorPointer 能夠成功定位20多個(gè)地方出來(lái) 但是前面幾個(gè)定位是什么首頁(yè) 搜索 不是我們想要的 問(wèn)題不大。我們刪除這幾個(gè)定位就好了

 blockclass = driver.find_elements_by_class_name("cursorPointer")
        del blockclass[0]        del blockclass[0]        del blockclass[0]        for blockc in blockclass:                blockc.click()

刪除幾個(gè)定位就好了    
然后現(xiàn)在調(diào)試以后 集合代碼跑了一次發(fā)現(xiàn)了幾個(gè)問(wèn)題,第一個(gè)就是 當(dāng)

driver.execute_script("finishWxCourse()")    #執(zhí)行js代碼

執(zhí)行代碼以后,會(huì)alert一個(gè)窗口出來(lái)說(shuō) 完成了課程。然后就會(huì)導(dǎo)致selenium不能點(diǎn)后退 面向百度編程以后

  dig_alert = driver.switch_to.alert     #搜索彈窗        dig_alert.accept()                     #點(diǎn)擊確定

接著就是最后一個(gè)坑了driver.back()以后蛋疼了 back以后 之前定位的會(huì)失效···所以只能每回退一次重新定位  還有要注意的就是在一些關(guān)鍵地方之前要time sleep一秒 不然還沒(méi)請(qǐng)求完成出來(lái)就執(zhí)行下一步了 會(huì)導(dǎo)致報(bào)錯(cuò) 最后就大功告成了

下面貼完整代碼

#coding=utf-8

from selenium import webdriver

import time

def login():

        driver = webdriver.Chrome("C:/Python27/chromedriver.exe")

        driver.get("http://wb.mycourse.cn/")

        driver.delete_all_cookies()

        driver.add_cookie({'name':'JSESSIONID','value':'93BEC0FDEF428F98DA1F69A6B3C2BF88'})     #cookie都過(guò)期了的 不用試

        driver.add_cookie({'name':'acw_tc','value':'7b39758715392684428742395e7ed4b94ed4e9616cb11d4b9df9e244ec7573'})

        driver.add_cookie({'name':'SERVERID','value':'02cc313090e3650844ab417ac43bf774|1539357767|1539357719'})

        driver.get("http://wb.mycourse.cn/svnweiban/student/study_studyAndTest.action")

        blockclass = driver.find_elements_by_class_name("cursorPointer")

        del blockclass[0]

        del blockclass[0]

        del blockclass[0]

        for blockc in blockclass:

                blockc.click()

        for i in range(99):

                link2s = driver.find_elements_by_class_name("courseText")

                link2s.click()
                driver.execute_script("finishWxCourse()")
                time.sleep(1)
                dig_alert = driver.switch_to.alert
                dig_alert.accept()
                driver.back()
                time.sleep(1)
                blockclass = driver.find_elements_by_class_name("cursorPointer")
                del blockclass[0]
                del blockclass[0]
                del blockclass[0]
                for blockc in blockclass:
                        blockc.click()
                time.sleep(0.5)
login()

以上就是怎樣利用python完成大學(xué)刷課,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)標(biāo)題:怎樣利用python完成大學(xué)刷課
網(wǎng)頁(yè)路徑:http://jinyejixie.com/article32/ijdcpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站虛擬主機(jī)、小程序開(kāi)發(fā)、云服務(wù)器、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
鹿泉市| 涿州市| 九龙城区| 淳化县| 噶尔县| 金塔县| 岳西县| 澄江县| 沈丘县| 新晃| 东丽区| 长兴县| 佳木斯市| 金山区| 那曲县| 六安市| 克什克腾旗| 雷山县| 兖州市| 云安县| 固阳县| 武定县| 闵行区| 乐清市| 沙洋县| 镇巴县| 诸暨市| 嘉祥县| 八宿县| 游戏| 兰溪市| 荥经县| 会理县| 丹凤县| 白水县| 黄陵县| 平凉市| 偃师市| 宾川县| 贵阳市| 会同县|