【WEB自动化】北理乐学视频自动连播

自用的成分大一点,代码写得很丑

from time import  *
import requests
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains


def load_photo(url, name):
    '''给定图片链接,将图片以某个名称下载到本地'''
    # url = 'http://img14.360buyimg.com/n1/s450x450_jfs/t1/148801/37/12770/118749/5f9d71e4E39f1e893/533675187c108953.jpg'
    reponse = requests.get(url)
    # name = 'd:/photo.jpg'
    with open(name, 'wb') as ft:
        ft.write(reponse.content)

def drop_scroll(browser):
    '''将滑条从头滚动到底,以便让浏览器充分加载'''
    for x in range(1, 11, 2):
        # time.sleep(0.5)
        j = x/10
        js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
        browser.execute_script(js)

def switch_window(browser):
    '''将browser的指令移到新打开的小窗口处'''
    # time.sleep(0.5) # 如果移转失败,请增大这个时间
    windows = browser.window_handles
    browser.switch_to.window(windows[-1])

def switch_window_back(browser):
    '''将browser的指令移回旧的小窗口'''
    windows = browser.window_handles
    browser.switch_to.window(windows[0])

#步骤:
# 切换到chrome.exe所在路径下
# cmd执行 chrome.exe --remote-debugging-port=9222 --user-data-dir="E:\selenium_data"
# 在打开的浏览器中进入第一个视频的页面
# 调整好视频的播放速度为16X(建议用chrome扩展程序VedioSpeedController来做,Enable和RememberVedioSpeed勾选上)
# 运行py脚本,控制台输入每个视频停留多长时间(min,浮点数)


# 接管
min_per_vedio=float(input("请输入每个视频停留多长时间(min,浮点数)"))
t_start=time()
chrome_options = Options()
chrome_options.add_experimental_option("debuggerAddress", "127.0.0.1:9222")  #  前面设置的端口号
browser = webdriver.Chrome(options=chrome_options)
browser.set_window_size(1600, 1200) # 设置窗口大小
browser.set_window_position(0, 0) # 设置浏览器的位置

while True:
    try:
        sleep(0.8)
        btn = browser.find_element_by_css_selector("button[class='vjs-big-play-button']") #这里建议写CSS选择器,Xpath不行
        ActionChains(browser).drag_and_drop_by_offset(btn,30,30).perform() #偏移适当的像素,使得鼠标点击能点中
        sleep(60*min_per_vedio)  #等待视频播放
        Next = browser.find_element_by_xpath("//div[@class='float-right']") #找到”下一个视频“按钮
        url = Next.find_element_by_xpath(".//a[@id='next-activity-link']").get_attribute('href')
        browser.get(url)
        switch_window(browser)
    except Exception as e:
        # 访问异常的错误编号和详细信息
        print(e.args)
        break

    finally:
        t_end=time()
        print("\n程序已运行时间: {:.7}s".format(t_end-t_start))


posted @ 2021-05-21 19:19  yhm138  阅读(273)  评论(0)    收藏  举报