python利用selenium实现b站视频自动跳过片尾

在这里插入图片描述

前言

最近一直忙于在b站看番的我很是劳累,每天看番都要看很久,可是一直坐在电脑面前看,还要时不时的跳过片尾,这让我很难受啊,又累又烦,想趟床上看,又不想看片尾的音乐,这很难受,==(不过这不是说b站不好,b站也很努力改进了很多东西,从代码里是能看出来的,而且b站真的很好,让我受益良多,不过如果能把自动跳过片头和片尾加上那就更加完美了!!!)==于是我就开始自己实现了,不过一开始是想跳过片头和片尾的,不过这些不可控因素太多就算了,因为有些动漫一开始是先剧情然后再开始播放音乐,这样就很难受了,所以就跳过片尾就好了!!

selenium的下载与常用语法

selenium下载

没有下载的小伙伴可以点开此链接:https://blog.csdn.net/weixin_45859193/article/details/107796812

selenium查找路径语法

一、id定位

driver.find_element_by_id("").send_keys("")

二、name定位

driver.find_element_by_name("").send_keys("")

三、class定位

driver.find_element_by_class_name("")

四、tag定位

driver.find_element_by_tag_name("")

五、link定位

driver.find_element_by_link_text(“忘记密码”).click()

六、partial link定位

driver.find_element_by_partial_link_text(“忘记”).click()

七、xpath定位(常用,也实用,本文主要用xpath定位)

driver.find_element_by_xpath("").click()

selenium打开,关闭语法

1.打开浏览器
driver.get("")

2.关闭浏览器
driver.quit("")

代码块

代码注释很多,如果报错可以尝试重新运行,实测可行,不过不知道会不会有bug,或其他因素,如有发现可以在评论区留言,欢迎大佬指导!!

from selenium import webdriver
import time

data=input('请输入你想要看的视频路径\n1.路径1 0.路径二(默认路径1)')
shijian=input('请输入你的视频时长为多少(比如22.30=1350秒,输入22.30)')
#分钟
minute=int(shijian.split('.')[0])
minute=minute*60
#秒
second=int(shijian.split('.')[-1])
#总时长
total=minute+second
#放入自己各个视频的时长
url_list=['https://www.bilibili.com/video/BV12a4y1J7vd','https://www.bilibili.com/bangumi/play/ep33712','https://www.bilibili.com/bangumi/play/ep36425']
driver = webdriver.Chrome()
#写入自己的账号密码,验证码可以手动自己输,不会用自动化破解验证码= =,反正就登陆一次,然后自己设置分辨率吧
driver.get(url_list[0])
time.sleep(3)

try:
    driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[2]/div/div[2]/div[3]/div[1]/div[2]/a[1]').click()

    # 账号
    driver.find_element_by_xpath('/html/body/div[4]/div/div[3]/div/div[2]/div[1]/div/input').send_keys('账号')
    # 密码
    driver.find_element_by_xpath('/html/body/div[4]/div/div[3]/div/div[2]/div[2]/div/input').send_keys('密码')
    # 登陆
    driver.find_element_by_xpath('/html/body/div[4]/div/div[3]/div/div[5]/button/span').click()
    # 延迟10秒来输验证码的时间
    time.sleep(10)
except:
    pass

#这里来个判断,因为弹幕只需要关闭一次就好了
n=0
#新视频也没怎么改,就改了一点抓取地方而已,希望你们可以自己动手试试
if data == '0':
    for url in url_list:
        try:
            # 等待加载,捕获异常
            driver.set_page_load_timeout(5)
            # 打开访问的浏览器
            driver.get(url)
            time.sleep(5)

        except Exception:
            print("timeout")
        n += 1
        element = driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[6]')  # xpath抓取播放控件
        time.sleep(2)
        print('控件抓取成功')
        # 播放
        driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[10]/div[2]/div[2]/div[1]/div[1]/button[1]/span').click()  # xpath定位成功后点击播放
        time.sleep(1)
        if n == 1:
            # 弹幕
            driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[2]/div/div[2]/div[1]/input').click()
        time.sleep(2)
        driver.find_element_by_xpath('/html/body').click()
        print('播放成功')
        time.sleep(3)
        # 全屏
        driver.find_element_by_xpath('//*[@id="图层_1"]').click()
        # 全屏之后在点击播放一次
        time.sleep(2)
        driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[10]/div[2]/div[2]/div[1]/div[1]/button[1]/span').click()
        # 片头到视频播放结束(不包括片尾),22分30秒=1350秒,实测是差不多的,(时间尽量多个5-10秒)
        time.sleep(1350)
        print('------正在加载下一个视频-------')
        time.sleep(3)
else:
    for url in url_list:
        try:
            # 等待加载,捕获异常
            driver.set_page_load_timeout(5)
            # 打开访问的浏览器
            driver.get(url)
            time.sleep(5)

        except Exception:
            print("timeout")
        n += 1
        element = driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[1]/div[6]')  # xpath抓取播放控件
        time.sleep(2)
        print('控件抓取成功')
        # 播放
        driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]').click()  # xpath定位成功后点击播放
        time.sleep(1)
        if n == 1:
            # 弹幕
            driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]/div[2]/div/div[2]/div[1]/input').click()
        time.sleep(2)
        driver.find_element_by_xpath('/html/body').click()
        print('播放成功')
        time.sleep(3)
        # 全屏
        driver.find_element_by_xpath('//*[@id="图层_1"]').click()
        # 全屏之后在点击播放一次
        time.sleep(1)
        driver.find_element_by_xpath('//*[@id="bilibiliPlayer"]/div[1]').click()
        # 片头到视频播放结束(不包括片尾),22分30秒=1350秒,实测是差不多的,(时间尽量多个5-10秒)
        time.sleep(total)
        print('------正在加载下一个视频-------')
        time.sleep(3)


#播放完毕,退出
driver.quit()
print('-----播放完毕-----')


总结

希望大家可以自己去实现查找一下这些xpath路径,可以锻炼一下自己selenium的能力,也可以从中发掘出其他的东西,或者改进代码!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值