【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))

浙公网安备 33010602011771号