最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python selenium模擬手動(dòng)操作實(shí)現(xiàn)無人值守刷積分功能

 更新時(shí)間:2020年05月13日 10:34:48   作者:smart_num_1  
這篇文章主要介紹了Python selenium模擬手動(dòng)操作達(dá)到無人值守刷積分目的,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

經(jīng)常為學(xué)校的各種刷分而發(fā)愁,得知開學(xué)無望,日后還要刷課,索性自動(dòng)化一次,學(xué)而不用乃愚昧 聰慧

四大模塊

初始化

from selenium import webdriver

if __name__ == '__main__':
	driver = webdriver.Chrome()
	url = 'https://pc.xuexi.cn/points/login.html?ref=https://pc.xuexi.cn/points/my-points.html'
	driver.get(url = url)

文章有效閱讀積分 + 文章時(shí)長(zhǎng)積分

def article():
	driver.get(url='https://www.xuexi.cn/d05cad69216e688d304bb91ef3aac4c6/9a3668c13f6e303932b5e0e100fc248b.html')
	# 該網(wǎng)址只是眾文章閱讀中的其中一個(gè)類別,還有很多類別的文章供閱讀,只需更換鏈接即可
	
  article_lis = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//span[@style=white-space: nowrap;]')))
  # 顯示等待 WebDriverWait(driver,100).until() 在這里等待,直到滿足條件或等待時(shí)間超過100,即 用xpath找到符合屬性style = "white-space: nowrap;" 的span節(jié)點(diǎn);
  
  print('共找到%s篇文章' % len(article_lis))
  article_num = 0
  # article_num 每天有效閱讀上限為6篇文章,但為確保有效時(shí)長(zhǎng)達(dá)到12分鐘,所以多出2篇
  
  for data in article_lis: # 遍歷找到的文章列表進(jìn)行模擬閱讀
    if article_num >= 8: # 當(dāng)讀夠8篇時(shí)跳出循環(huán),結(jié)束文章刷分
      break
    try:
      loading_page(data)
      print('已加載', data.text)
      # 輸出已刷文章,從而得出進(jìn)度
      article_num += 1
    except:
      continue
      
def loading_page(element = None):
  element.click()
  ele = driver.find_element_by_xpath('//a[contains(class,"search-icon")]')
  ele.send_keys(Keys.PAGE_DOWN)
  # 模擬頁(yè)面滾動(dòng)。采用的方法是找到 ‘搜索' 功能按鈕,不點(diǎn)擊,直接模擬點(diǎn)擊按鍵 PAGE_DOWN 
 
  time.sleep(120)
  # 每個(gè)頁(yè)面停留兩分鐘,至少30秒。經(jīng)測(cè)試,每隔30s 將會(huì)提交一個(gè)post請(qǐng)求,只有請(qǐng)求過后,有效閱讀數(shù)才會(huì) +1
  return None

 

視頻有效觀看積分 + 視頻時(shí)長(zhǎng)積分

 driver.get(url = 'https://www.xuexi.cn/4426aa87b0b64ac671c96379a3a8bd26/db086044562a57b441c24f2af1c8e101.html#11c4o0tv7nb-5')
  # 同上,該網(wǎng)址只是眾視頻觀看中的其中一個(gè)類別,還有很多類別的視頻供觀看,只需更換鏈接即可
  
  video_lis = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//div[@style="margin: 0px auto;"]/div/div')))
  # 同上,顯示等待
  
  print('共找到%s篇文章' % len(video_lis))
  video_long = 0
  # 記錄已經(jīng)播放的時(shí)間 
  
  video_lis_1 = []
  for data in video_lis:
    video_lis_1.append(data.get_attribute('data-link-target'))
	# 與文章不同的地方是,文章閱讀是模擬點(diǎn)擊,而視頻播放獲取網(wǎng)址,放到video_lis_1 中
  
  for url_1 in video_lis_1: # 遍歷視頻列表,播放視頻
    if video_long >= 1080: #視頻時(shí)長(zhǎng)為18分鐘,即1080秒,在播放時(shí)間超過18分后結(jié)束播放,其實(shí)也根據(jù)分鐘判斷,我也不知道為什么當(dāng)時(shí)就用上了秒
      break
    try:
      video.get(url = url_1)
      tim_now = loading_video(driver = driver)
      video_long += tim_now*60
      # loading_video 返回的是已閱讀分鐘數(shù),故*60
      print('視頻播放中,已播放時(shí)長(zhǎng)%s秒'%video_num)
    except:
      continue
      
def loading_video(driver = None):
  elem_first = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH, '//span[@class="duration"]')))
  elem_start = driver.find_element_by_xpath('//div[@class="outter"]')
  elem_start.click()
  # 打開網(wǎng)頁(yè)后不自動(dòng)播放,應(yīng)該是因?yàn)槭侵苯哟蜷_網(wǎng)址的原因
  # 因?yàn)樵诖酥拔乙仓苯油ㄟ^模擬點(diǎn)擊打開網(wǎng)頁(yè),結(jié)果是自動(dòng)播放的,但有一點(diǎn)兒不符合我當(dāng)時(shí)的需求,故改為打開網(wǎng)頁(yè)的方式
  
  tim_num = (int(elem_first[0].text[0])*10 + int(elem_first[0].text[1]))
	# 目的是獲取視頻的總時(shí)間,只取分鐘數(shù)
  if tim_num != 0: # 因?yàn)橛行┮曨l它根本不到一分鐘,故加判斷條件
    time.sleep(tim_num * 60)
    return tim_num
  else:
    time.sleep(60)
    # 不足一分鐘,不播放也要湊夠一分鐘
    return 1

 

每日答題積分

def DaTi():
	driver.get(url = 'https://pc.xuexi.cn/points/exam-practice.html')
  elem_juje = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="q-header"]')))
  juje = elem_juje.get_attribute('innerText')
  # 在每日答題中,有三類題,判斷題、選擇題、填空題,所以先獲取題的類別
  # 注意 特別需要注意的是 By.XPATH 和 xpath 文本獲取稍有卻別,By.XPATH 獲取文本方式為.get_attribute('innerText')
  
  time.sleep(1) # 等待一秒,其實(shí)也無所謂,但是為防止過快操作造成電腦卡頓,還是等待一秒。
  if '選' in juje:
    elem_tishi = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//span[@class="tips"]')))
    elem_tishi.click()
    # 在答題中,答案在查看提示中以紅色標(biāo)記,所以首先要模擬點(diǎn)擊查看答案,使答案加載
    time.sleep(0.5)
    elem_answer = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="line-feed"]/font')))
    # 提取紅色標(biāo)記的文字,即答案
    time.sleep(0.5)
    # 同樣沒什么實(shí)際意義
    
    ans_lis = []
    for elem in elem_answer:
      ans_lis.append(elem.get_attribute('innerText'))
    # 因?yàn)檫x擇題嘛,不一定就是單選題,所以要存放這些答案,以便于在選項(xiàng)中找答案
    print('得到答案')
    time.sleep(0.5)
    # 同樣沒什么實(shí)際意義
    
    elem_juje.click()
		# 再次模擬點(diǎn)擊的原因是 此時(shí) 查看提示 框還處于打開狀態(tài),如果不關(guān)閉,會(huì)影響提交答案的操作
		# 模擬點(diǎn)擊網(wǎng)頁(yè),關(guān)閉 查看提示 框
    time.sleep(0.5)
    
    elem_xuanxiang = WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH, '//div[@class="question"]/div[@class="q-answers"]/div[contains(@class,"q-answer")]')))
    # 獲取所有的選項(xiàng)節(jié)點(diǎn)
    
    for elem in elem_xuanxiang:
      data = elem.get_attribute('innerText')[3:].replace('-','')
      print(data)
      for i in ans_lis:
        if i in data:
          elem.click()
          ans_lis.remove(i) 
          # 根據(jù)依次A -- > D 遍歷答案,將兩者對(duì)照進(jìn)行選擇與否,所以滿足要求后去除該答案
          # 防止對(duì)選項(xiàng)多次點(diǎn)擊造成取消選擇或其他錯(cuò)誤
          time.sleep(0.5) #防止過快操作,每次選擇后等待0.5秒
          break
          
    elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="action-row"]/button')))
    elem_next.click()
    # 模擬點(diǎn)擊確定按鈕跳轉(zhuǎn)下一題
    DaTi(driver)
  elif '填' in juje:
  
    elem_tishi = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//span[@class="tips"]')))
    elem_tishi.click()
    time.sleep(0.5)
    elem_answer = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="line-feed"]')))
    time.sleep(0.5)
    if '請(qǐng)觀看視頻' in elem_answer.get_attribute('innerText'):
      input('手動(dòng)選擇答案后無需點(diǎn)擊確定,在此輸入回車?yán)^續(xù)')
      elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="action-row"]/button')))
      elem_next.click()
    # 在填空題中會(huì)有觀看視頻的題目,而且查看提示中會(huì)寫‘請(qǐng)觀看視頻'而不會(huì)直接給出答案,所以要人工選擇
    elem_answer = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//div[@class="line-feed"]/font')))
    answer = []
    time.sleep(0.5)
    for elem in elem_answer:
      answer.append(elem.get_attribute('innerText'))
		# 同樣填空題中也有多個(gè)空的情況,所以將答案放在列表里
    time.sleep(1)
    elem_data = WebDriverWait(driver,100).until(EC.presence_of_all_elements_located((By.XPATH,'//input[@class="blank"]')))
    # 找到每個(gè)空
    for i in range(len(answer)):
      elem_data[i].send_keys(answer[i])
      time.sleep(0.5)
    # 通過遍歷空,將對(duì)應(yīng)的答案寫入
    elem_data[0].click()
    time.sleep(1)
    # 模擬點(diǎn)擊網(wǎng)頁(yè),因?yàn)樵趯懲昕蘸螅稽c(diǎn)擊網(wǎng)頁(yè)會(huì)有確定按鈕為不可點(diǎn)的情況
    elem_next = WebDriverWait(driver,100).until(EC.presence_of_element_located((By.XPATH,'//div[@class="action-row"]/button')))
    elem_next.click()
    DaTi(driver)
  elif '判' in juje:# 同上,判斷題不會(huì)直接給出答案,所以只能手動(dòng)吧
    input('手動(dòng)選擇答案后無需點(diǎn)擊確定,在此輸入回車?yán)^續(xù)')
    elem_next = WebDriverWait(driver, 100).until(EC.presence_of_element_located((By.XPATH, '//div[@class="action-row"]/button')))
    elem_next.click()
    DaTi(driver)

 

結(jié)合PyQt5,最終效果圖

聲明:圖片沒有別的意思,個(gè)人感覺很歡喜,圖片轉(zhuǎn)自------百度圖片

圖片沒有別的意思

總結(jié)

到此這篇關(guān)于Python selenium模擬手動(dòng)操作實(shí)現(xiàn)無人值守刷積分功能的文章就介紹到這了,更多相關(guān)Python selenium刷積分內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python制作心型照片墻效果

    利用Python制作心型照片墻效果

    沒到一年一度的520等節(jié)假日,作為一個(gè)地地道道的程序猿心里慌得一批,除了吃飯買禮物看電影好像就沒有更多的想法了。本文教你用Python制作一個(gè)心型照片墻,需要的可以參考一下
    2022-05-05
  • python3.9.1環(huán)境安裝的方法(圖文)

    python3.9.1環(huán)境安裝的方法(圖文)

    這篇文章主要介紹了python3.9.1環(huán)境安裝的方法(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Django MTV和MVC的區(qū)別詳解

    Django MTV和MVC的區(qū)別詳解

    這篇文章主要介紹了Django MTV和MVC的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python中pika模塊問題的深入探究

    python中pika模塊問題的深入探究

    這篇文章主要給大家介紹了關(guān)于python中pika模塊問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • python如何往列表頭部和尾部添加元素

    python如何往列表頭部和尾部添加元素

    這篇文章主要介紹了python如何往列表頭部和尾部添加元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例

    用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例

    這篇文章主要介紹了用Python的線程來解決生產(chǎn)者消費(fèi)問題的示例,包括對(duì)使用線程中容易出現(xiàn)的一些問題給出了相關(guān)解答,需要的朋友可以參考下
    2015-04-04
  • Python的Web框架Django介紹與安裝方法

    Python的Web框架Django介紹與安裝方法

    這篇文章介紹了Python的Web框架Django與安裝方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實(shí)例

    python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實(shí)例

    今天小編就為大家分享一篇python繪制雙Y軸折線圖以及單Y軸雙變量柱狀圖的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python命名關(guān)鍵字參數(shù)的作用詳解

    python命名關(guān)鍵字參數(shù)的作用詳解

    在本篇文章里小編給大家整理了一篇關(guān)于python命名關(guān)鍵字參數(shù)的作用詳解內(nèi)容,有興趣的朋友們可以學(xué)習(xí)參考下。
    2021-03-03
  • python可迭代類型遍歷過程中數(shù)據(jù)改變會(huì)不會(huì)報(bào)錯(cuò)

    python可迭代類型遍歷過程中數(shù)據(jù)改變會(huì)不會(huì)報(bào)錯(cuò)

    這篇文章主要介紹了python可迭代類型遍歷過程中數(shù)據(jù)改變會(huì)不會(huì)報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12

最新評(píng)論

龙泉市| 沈丘县| 柳林县| 奉贤区| 呼和浩特市| 呼玛县| 方正县| 师宗县| 哈尔滨市| 大名县| 卢氏县| 道真| 莆田市| 余干县| 天水市| 福鼎市| 马关县| 木兰县| 繁昌县| 梁河县| 天柱县| 博客| 大英县| 江北区| 高平市| 出国| 江华| 西乌珠穆沁旗| 乌兰察布市| 特克斯县| 香河县| 科尔| 姚安县| 黔江区| 阳信县| 新宾| 儋州市| 油尖旺区| 荆门市| 平安县| 喀喇沁旗|