XXQG—每日积分获取

一、扫码登陆

1.login.py

import time
import urllib
from selenium import webdriver
from selenium.webdriver.common.by import By
from  datetime import datetime
import os

def login():
    browse = webdriver.Chrome()
    # 打开登录页面的网址,即第二个iframe
    login_url = "https://login.xuexi.cn/login/xuexiWeb?appid=dingoankubyrfkttorhpou&goto=https%3A%2F%2Foa.xuexi.cn&type=1&state=8a54e186b6084e0fOGGda0FzKExz-lV5tK-2RCZGZPly8ttbQz2YkWXb37jldQRL1ZSJ1UXNTxaA0IWb&check_login=https%3A%2F%2Fpc-api.xuexi.cn"
    browse.get(url=login_url)
    # 窗口最大化
    browse.maximize_window()
    # 通过获取get_attribute()方法获取二维码链接
    QR_code_url = browse.find_element(By.XPATH,'//div[@id="app"]//img').get_attribute('src')
    # 获取当前时间
    current_time = datetime.now().strftime("%H点%M分")
    print(current_time)
    # 下载二维码到本地
    urllib.request.urlretrieve(QR_code_url, filename=f'{current_time}.jpg')
    print("下载完成")
    # 暂停10s,用手机扫码登陆
    time.sleep(10)
    os.remove(f'{current_time}.jpg')
    browse.get("https://pc.xuexi.cn/points/my-study.html")
    # time.sleep(100)
    return browse

if __name__ == "__main__" :
    login()

二、选读文章模块

get_reading_score.py

import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from login import login
from selenium.webdriver.common.by import By


def get_reading_score():
    browse = login()

    # 点击"学习积分"按钮,会跳转到新的窗口
    xue_xi_ji_fen = browse.find_element(By.XPATH, '//div[@class="text-title"]/span[contains(text(),"学习积分")]')
    xue_xi_ji_fen.click()

    # 获取所有窗口句柄
    all_window_handles = browse.window_handles

    # 切换到新打开的窗口,新窗口句柄是列表中的最后一个
    new_window_handle = all_window_handles[-1]
    browse.switch_to.window(new_window_handle)

    # "我要选读文章"模块
    try:
        wait = WebDriverWait(browse, 10).until(EC.presence_of_element_located(
            (By.XPATH, '//*[@id="app"]/div/div[2]/div/div[3]/div[2]/div[2]//div[@class="big"]')))
        # 定位到"我要选读文章"模块
        qu_kan_kan = browse.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/div/div[3]/div[2]/div[2]//div[@class="big"]')
        # 点击"去看看",不会出现新的窗口句柄,直接在同一个窗口跳转,改变URL
        qu_kan_kan.click()
    except Exception as ec:
        print("未找到元素")

    # 每有效阅读一篇积1分,上限6分
    # 有效阅读文章累计1分钟积1分,上限6分
    try:
        i = 1
        for i in range(1, 8):
            # 先确定新页面是否加载完成
            wait = WebDriverWait(browse, 10).until(EC.presence_of_element_located(
                (By.XPATH, ' // div // span[contains(text(), "重要新闻")]')))
            # print("找到'重要新闻'按钮的位置")
            # 开始阅读新闻,每条新闻是有序排放的,只需改变列表中的div[{i}]即可自动跳转到下一条新闻
            read_news = browse.find_element(By.XPATH,
                                            f'//*[@id="231c"]/div/div/div/div/div/section/div/div/div/div/div[2]/section/div/div/div/div[1]/div[{i}]/div/div/div/span')
            read_news.click()
            # 阅读新闻会打开新的窗口,获取所有窗口列表
            all_window_handles = browse.window_handles
            # print(f"所有窗口列表如下:{all_window_handles}")
            # 切换到新窗口,新窗口句柄是列表中的最后一个
            new_window_handle = all_window_handles[-1]
            browse.switch_to.window(new_window_handle)
            # 在新窗口停留70s 拿1积分
            time.sleep(5)
            # 拉动页面滚动栏,拉到1/3
            browse.execute_script("window.scrollTo(0, document.body.scrollHeight / 3);")
            print(f"正在阅读第{i}条新闻")
            time.sleep(5)
            # 拉动页面滚动栏,拉到底部
            browse.execute_script("window.scrollTo(0, document.body.scrollHeight);")
            time.sleep(60)
            # print(f"当前窗口:{new_window_handle}")
            # 关闭正在阅读的新闻窗口并返回上一个
            browse.close()
            # 切回上一个窗口
            previous_window_handle = all_window_handles[-2]
            browse.switch_to.window(previous_window_handle)
            if i == 6:
                print('顺利完成"我要选读文章"模块积分获取')
    except Exception as ec:
        print('"我要选读文章"模块出现异常')

    return browse

if __name__ == "__main__":
    get_reading_score()

三、视听学习模块

get_video_score.py

import time
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from login import login
from selenium.webdriver.common.by import By

def get_video_score():
    browse = login()

    # 点击"学习积分"按钮,会跳转到新的窗口
    xue_xi_ji_fen = browse.find_element(By.XPATH, '//div[@class="text-title"]/span[contains(text(),"学习积分")]')
    xue_xi_ji_fen.click()

    # 获取所有窗口句柄
    all_window_handles = browse.window_handles

    # 切换到新打开的窗口,新窗口句柄是列表中的最后一个
    new_window_handle = all_window_handles[-1]
    browse.switch_to.window(new_window_handle)

    try:
        wait = WebDriverWait(browse, 10).until(EC.presence_of_element_located(
            (By.XPATH, '//*[@id="app"]/div/div[2]/div/div[3]/div[2]/div[3]//div[@class="big"]')))
        # 定位到"我要视听学习"模块
        qu_kan_kan = browse.find_element(By.XPATH, '//*[@id="app"]/div/div[2]/div/div[3]/div[2]/div[3]//div[@class="big"]')
        # 点击"去看看",不会出现新的窗口句柄,直接在同一个窗口跳转,改变URL
        qu_kan_kan.click()
    except Exception as ec:
        print("未找到元素")

    # 每有效收听/观看一个积1分,上限6分,
    # 有效收听音频或观看视频累计1分钟积1分,上限6分
    try:
        i = 1
        for i in range(1, 7):
            wait = WebDriverWait(browse, 10).until(
                EC.presence_of_element_located((By.XPATH, '//div//span[contains(text(),"县级融媒")]')))
            video_news = browse.find_element(By.XPATH,
                                             f'//*[@id="6ho1do4x5n"]/div/div/div/div/div/section/div/div/div/div/div[2]/section/div/div/div/div[{i}]/div/div/div/div/span')
            video_news.click()
            # 视听新闻会打开新的窗口,获取所有窗口列表
            all_window_handles = browse.window_handles
            new_window_handle = all_window_handles[-1]
            # 切换到新窗口,新窗口句柄是列表中的最后一个
            browse.switch_to.window(new_window_handle)
            # 如果是新闻页面,则点击播报按钮
            try:
                wait = WebDriverWait(browse, 10).until(
                    EC.presence_of_element_located((By.XPATH,
                                                    '//*[@id="root"]/div/section/div/div/div/div/div[2]/section/div/div/div/div/div/div/div[2]/div/span[4]/div/button')))
                print(f"第{i}次播放试听新闻")
                play_button = browse.find_element(By.XPATH,
                                                  '//*[@id="root"]/div/section/div/div/div/div/div[2]/section/div/div/div/div/div/div/div[2]/div/span[4]/div/button')
                play_button.click()
                time.sleep(5)
                browse.execute_script("window.scrollTo(0, document.body.scrollHeight / 3);")
                time.sleep(5)
                browse.execute_script("window.scrollTo(0, document.body.scrollHeight);")
                time.sleep(180)
            except Exception as ec:
                print(f"第{i}次执行打开的是视频")
                time.sleep(5)
                browse.execute_script("window.scrollTo(0, document.body.scrollHeight / 3);")
                time.sleep(180)
            browse.close()
            # 切回上一个窗口
            previous_window_handle = all_window_handles[-2]
            browse.switch_to.window(previous_window_handle)
    except Exception as ec:
        print('"我要视听学习"模块出现异常')


if __name__ == "__main__":
    get_video_score()
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值