美文网首页
学习强国

学习强国

作者: Noza_ea8f | 来源:发表于2019-11-15 19:44 被阅读0次
# -*- coding: utf8 -*-

# -*- coding: utf8 -*-

import requests
import time
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument(
    'user-agent=Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.96 Safari/537.36')
options.add_argument('--no-sandbox')
options.add_argument('disable-infobars')
options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])

browser = webdriver.Chrome()
# browser = webdriver.Firefox()
browser.implicitly_wait(60)
browser.maximize_window()

HOME_PAGE = 'https://www.xuexi.cn/'  # 学习强国官方url
LOGIN_LINK = 'https://pc.xuexi.cn/points/login.html'  # 登录url
VIDEO_LINK = 'https://www.xuexi.cn/a191dbc3067d516c3e2e17e2e08953d6/b87d700beee2c44826a9202c75d18c85.html?pageNumber=39'  # 视频url
VIDEO_LINK2 = 'https://www.xuexi.cn/4426aa87b0b64ac671c96379a3a8bd26/db086044562a57b441c24f2af1c8e101.html#11c4o0tv7nb-5'  # 视频url
# LONG_VIDEO_LINK = 'https://www.xuexi.cn/f65dae4a57fe21fcc36f3506d660891c/b2e5aa79be613aed1f01d261c4a2ae17.html'  # 30分钟以上视频url
# LONG_VIDEO_LINK2 = 'https://www.xuexi.cn/0040db2a403b0b9303a68b9ae5a4cca0/b2e5aa79be613aed1f01d261c4a2ae17.html'  # 备用连接
TEST_VIDEO_LINK = 'https://www.xuexi.cn/8e35a343fca20ee32c79d67e35dfca90/7f9f27c65e84e71e1b7189b7132b4710.html'  # 短视频连接

ARTICLES_LINK = 'https://www.xuexi.cn/d05cad69216e688d304bb91ef3aac4c6/9a3668c13f6e303932b5e0e100fc248b.html'
SCORES_LINK = 'https://pc.xuexi.cn/points/my-points.html'  # 分数url


# 等待提示
def wait_key():
    while True:
        message = input('请输入“空格键”继续:')
        if message == ' ':
            break
        print('你输入的是 ' + message + '!')


def login():
    """模拟登录"""
    browser.get(LOGIN_LINK)
    # browser.maximize_window()
    browser.execute_script("var q=document.documentElement.scrollTop=1000")
    # time.sleep(10)
    wait_key()
    browser.get(HOME_PAGE)
    print("模拟登录完毕\n")


def watch_videos():
    """观看视频"""
    browser.get(VIDEO_LINK)
    # xpath_pat = '//*[@id="root"]/div/section/div/div/div/div/div/section/div/div/div/div/div/section/div/div/div/div/div/section/div/div/div/div/div[3]/section/div/div/div/div/div/div/section/div[3]/section/div/div/div[1]/div[%d]/div[1]/div/div/div[1]/span'
    xpath_pat = '//*[@id="root"]/div/div/section/div/div/div/div/div/section/div/div/div/div/div/section/div/div/div/div/div/section/div/div/div/div/div[3]/section/div/div/div/div/div/div/section/div[3]/section/div/div/div[1]/div[%d]/div[%d]/div/div/div[1]/span'
               
    spend_time = 0

    for i in range(1, 4):
        for j in range(1, 3):
            video = browser.find_elements_by_xpath(xpath_pat % (i, j))[0]
            # if i > 6:
            #     break
            video.click()
            all_handles = browser.window_handles
            browser.switch_to.window(all_handles[-1])
            browser.get(browser.current_url)

            # 点击播放
            browser.find_element_by_xpath("//div[@class='outter']").click()
            # 获取视频时长
            video_duration_str = browser.find_element_by_xpath("//span[@class='duration']").get_attribute('innerText')
            video_duration = int(video_duration_str.split(':')[0]) * 60 + int(video_duration_str.split(':')[1])
            # 保持学习,直到视频结束
            time.sleep(video_duration + 3)
            spend_time += video_duration + 3
            browser.close()
            browser.switch_to.window(all_handles[0])

    browser.get(TEST_VIDEO_LINK)
    time.sleep(3010 - spend_time)
    print("播放视频完毕\n")


def watch_videos2():
    """观看视频"""
    browser.get(VIDEO_LINK2)
    tab = browser.find_element_by_xpath('//*[@id="0454"]/div/div/div/div/div/div/div/div[1]/div/div[3]/div/div')
    tab.click()

    xpath_pat = '//*[@id="1koo357ronk-5"]/div/div/div/div/div/div/section/div[3]/section/div/div/div[1]/div[%d]/div[%d]/section/div/div/div/div/div[1]/div/div/div'
    spend_time = 0

    for i in range(1, 6):
        for j in range(1, 5):
            try:
                video = browser.find_elements_by_xpath(xpath_pat % (i, j))[0]

                video.click()
                all_handles = browser.window_handles
                browser.switch_to.window(all_handles[-1])
                browser.get(browser.current_url)

                # 点击播放
                browser.find_element_by_xpath("//div[@class='outter']").click()
                # 获取视频时长
                video_duration_str = browser.find_element_by_xpath("//span[@class='duration']").get_attribute(
                    'innerText')
                video_duration = int(video_duration_str.split(':')[0]) * 60 + int(video_duration_str.split(':')[1])
                # 保持学习,直到视频结束
                time.sleep(video_duration + 3)
                spend_time += video_duration + 3
                browser.close()
                browser.switch_to.window(all_handles[0])
            except Exception:
                print(i, j)

        browser.get(TEST_VIDEO_LINK)
        time.sleep(3010 - spend_time)
        print("播放视频完毕\n")


def read_articles():
    """阅读文章"""
    browser.get(ARTICLES_LINK)
    # articles = browser.find_elements_by_xpath(
    #     '//*[@id="root"]/div/div/section/div/div/div/div/div/section/div/div/div/div[1]/div/section/div/div/div/div/div/section/div/div/div/div/div[3]/section/div/div/div/div/div/section/div/div/div[1]/div')
    for index in range(7):
        article = browser.find_element_by_xpath(
            '//*[@id="root"]/div/div/section/div/div/div/div/div/section/div/div/div/div[1]/div/section/div/div/div/div/div/section/div/div/div/div/div[3]/section/div/div/div/div/div/section/div/div/div[1]/div/div[{}]/div/div/div[1]/span'.format(
                index + 1))
        try:
            if index > 20:
                break
            article.click()
            all_handles = browser.window_handles
            browser.switch_to.window(all_handles[-1])
            browser.get(browser.current_url)
            for i in range(0, 2000, 100):
                js_code = "var q=document.documentElement.scrollTop=" + str(i)
                browser.execute_script(js_code)
                time.sleep(10)
            for i in range(2000, 0, -100):
                js_code = "var q=document.documentElement.scrollTop=" + str(i)
                browser.execute_script(js_code)
                time.sleep(10)
            time.sleep(80)
            browser.close()
            browser.switch_to.window(all_handles[0])
        except Exception:
            print(index)
    print("阅读文章完毕\n")


def get_scores():
    """获取当前积分"""
    browser.get(SCORES_LINK)
    time.sleep(2)
    gross_score = browser.find_element_by_xpath("//*[@id='app']/div/div[2]/div/div[2]/div[2]/span[1]") \
        .get_attribute('innerText')
    today_score = browser.find_element_by_xpath("//span[@class='my-points-points']").get_attribute('innerText')
    print("当前总积分:" + str(gross_score))
    print("今日积分:" + str(today_score))
    print("获取积分完毕,即将退出\n")


login()
read_articles()
watch_videos()
watch_videos2()
get_scores()
browser.quit()

相关文章

网友评论

      本文标题:学习强国

      本文链接:https://www.haomeiwen.com/subject/joosictx.html