虎牙自动发送弹幕

介绍

虎牙直播自动发送弹幕,使用selenium操作网页自动发送弹幕,因为虎牙限制,10秒发送一条。

温馨提示:需要电脑上安装Chrome浏览器

联系我:QQ2039808149

运行截图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

使用方法:

代码启动(python3环境):

  1. 在web.py启动服务
  2. 双击template下的index.html在浏览器中启动
    • 点击初始化检查电脑环境,如果环境没有问题 登录虎牙按钮变为可用
    • 点击登录虎牙,弹出虎牙官网扫码登录页面,使用手机虎牙app扫码登录(30秒内,页面会自动关闭)
    • 点击检查登录状态,发送弹幕前需要检查登录状态,否则不能发送。需要重新点击登录并扫码登录
    • 在左侧文本框中输入发送内容,程序随机挑选发送弹幕
    • 右侧发送条数中输入想要发送条数
    • 点击开始发送,自动打开虎牙界面发送弹幕(因为虎牙有限制,所以10秒发送一条)

exe启动

  1. 双击dist目录下的web.exe文件启动服务
  2. 双击template下的index.html在浏览器中启动
    • 点击初始化检查电脑环境,如果环境没有问题 登录虎牙按钮变为可用
    • 点击登录虎牙,弹出虎牙官网扫码登录页面,使用手机虎牙app扫码登录(30秒内,页面会自动关闭)
    • 点击检查登录状态,发送弹幕前需要检查登录状态,否则不能发送。需要重新点击登录并扫码登录
    • 在左侧文本框中输入发送内容,程序随机挑选发送弹幕
    • 右侧发送条数中输入想要发送条数
    • 点击开始发送,自动打开虎牙界面发送弹幕(因为虎牙有限制,所以10秒发送一条)

工作环境

目前系统自动在c盘创建文件夹huyaWorkSpace 目录,下载需要启动资源。

参考代码

from cgi import test
from lib2to3.pgen2 import driver
import re
from tkinter import E
from turtle import st
import requests
import time
import json
from selenium import webdriver
import sys
import getChromeVersion
import random


def testDriver(driverPath):

    try:
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-logging'])
        driver = webdriver.Chrome(
            options=options, executable_path=driverPath + '\\chromedriver.exe')
        driver.get("https://www.baidu.com/")
        title = driver.title
        if "百度" in title:
            return True
    except Exception:
        print(str("报错").center(50, '-'))
        return False
    finally:
        driver.close()
    return False


# 通过扫码登录


def loginByScan(WORK_SPACE):
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    driver = webdriver.Chrome(
        options=options, executable_path=WORK_SPACE + '\\chromedriver.exe')

    driver.get('https://i.huya.com/index.php?m=Subscribe&watch=1')
    driver.implicitly_wait(10)
    # 切换到iframe
    driver.switch_to.frame('UDBSdkLgn_iframe')

    driver.implicitly_wait(10)
    time.sleep(20)

    driver.get('https://www.huya.com/967722')
    # 获取cookie
    cookies = driver.get_cookies()
    # print(cookies)
    # cookie保存到cookies.txt文件
    f1 = open(WORK_SPACE + "\\cookies.txt", "w")
    json.dumps(cookies)
    f1.write(str(json.dumps(cookies)))
    f1.close()

    driver.close()

# 检查登录状态


def checkLoginState(WORK_SPACE):
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    driver = webdriver.Chrome(
        options=options, executable_path=WORK_SPACE + '\\chromedriver.exe')

    driver.get("https://www.huya.com/967722")
    # 加载cookie
    cookies = readCookies()
    for cook in cookies:
        driver.add_cookie(cook)

    driver.refresh()
    time.sleep(2)
    # 检测是否为登录状态
    text = driver.find_element(
        by='xpath', value='/html/body/div[2]/div/div/div[1]/div[2]/div[2]/div/div[3]/div[1]/div[6]/div[3]').get_attribute('innerHTML')
    
    driver.close()
    if '登录' in text:
        return '请先登录!'
    else:
        return '1'


def login(user, password):
    try:
        options = webdriver.ChromeOptions()
        options.add_experimental_option('excludeSwitches', ['enable-logging'])
        driver = webdriver.Chrome(
            options=options, executable_path=sys.path[0] + '\\chromedriver.exe')
        driver.get('https://i.huya.com/index.php?m=Subscribe&watch=1')
        # time.sleep(2)
        driver.implicitly_wait(10)
        # 切换到iframe
        driver.switch_to.frame('UDBSdkLgn_iframe')
        # 点击电脑图标弹出QQ登录选项
        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[2]/div[1]/div[4]/i').click()
        driver.implicitly_wait(10)
        # 点击qq登录
        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[1]/div[2]/div[2]/ul/li[2]').click()

        driver.implicitly_wait(10)
        # 切换窗口
        driver.switch_to.window(driver.window_handles[1])
        # 切换到iframe
        driver.switch_to.frame('ptlogin_iframe')

        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[9]/a[1]').click()

        driver.implicitly_wait(10)
        # 输入账号密码
        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[5]/div/div[1]/div[3]/form/div[1]/div/input').send_keys(user)
        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[5]/div/div[1]/div[3]/form/div[2]/div[1]/input').send_keys(password)
        driver.find_element(
            by='xpath', value='/html/body/div[1]/div[5]/div/div[1]/div[3]/form/div[4]/a/input').click()

        driver.implicitly_wait(10)
        time.sleep(5)

        # 切换窗口
        driver.switch_to.window(driver.window_handles[0])
        # 访问指定网址
        driver.get('https://www.huya.com/967722')
        # 获取cookie
        cookies = driver.get_cookies()
        # print(cookies)
        # cookie保存到cookies.txt文件
        f1 = open(sys.path[0] + "/cookies.txt", "w")
        json.dumps(cookies)
        f1.write(str(json.dumps(cookies)))
        f1.close()

        driver.close()
    except Exception:
        print('获取cookie失败!'.center(50, '-'))


def sendNumMsg(msgList, count, WORK_SPACE):

    # 屏蔽没用日志
    options = webdriver.ChromeOptions()
    options.add_experimental_option('excludeSwitches', ['enable-logging'])
    driver = webdriver.Chrome(
        options=options, executable_path=WORK_SPACE + '/chromedriver.exe')
    driver.get('https://www.huya.com')
    # 加载cookie
    driver.implicitly_wait(10)
    time.sleep(3)
    cookies = readCookies(WORK_SPACE=WORK_SPACE)
    # print(cookies)
    for cook in cookies:
        driver.add_cookie(cook)
    # 刷新页面

    driver.refresh()
    driver.get('https://www.huya.com/967722')
    # time.sleep(2)
    driver.implicitly_wait(10)

    for i in range(count):
        send(msg=str(msgList[random.randint(
            0, len(msgList) - 1)]), driver=driver)
        time.sleep(10)

    driver.close()
    return True


# 发送弹幕消息
def send(msg, driver):
    print('填入弹幕内容'.center(50, '-'))
    driver.find_element_by_xpath('//*[@id="pub_msg_input"]').click()
    driver.find_element_by_xpath('//*[@id="pub_msg_input"]').send_keys(msg)
    # time.sleep(5)
    driver.implicitly_wait(10)
    print('点击发送'.center(50, '-'))
    driver.find_element_by_xpath('//*[@id="msg_send_bt"]').click()
    # time.sleep(2)
    driver.implicitly_wait(10)
    # 获取文本内容
    text = driver.find_element_by_xpath(
        '//*[@id="chat-room__list"]').get_attribute('innerHTML')
    time.sleep(2)
    if msg in text:
        print('发送成功'.center(50, '-'))


# 读取本地cookie
def readCookies(WORK_SPACE):
    f = ''
    try:
        print('读取cookie文件'.center(50, '-'))
        f = open(WORK_SPACE+'\\cookies.txt', 'r')
        str = f.read()
        # print(str)
        # str.replace("\n", "")
        my_list = json.loads(str)
        print('读取cookie文件成功!'.center(50, '-'))
        return my_list
    except FileNotFoundError:
        print('没有cookie文件,请先扫码登录'.center(50, '-'))
    finally:
        if f:
            f.close()


if __name__ == '__main__':

    # loginByScan()

    msgList = ['666', '5sdgf']
    sendNumMsg(msgList=msgList, count=5, WORK_SPACE='C:\\huyaWorkSpace\\')
    print(random.randint(0, len(msgList) - 1))
    print(str(msgList[random.randint(0, len(msgList) - 1)]))

    # print(sys.path[0])
    # sys.path[0]
    # sendMsg('星魂666')
    # print(readCookies())
    # getCookies()

联系我:QQ2039808149
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
根据引用\[1\]和引用\[3\]的代码,可以看出这段代码使用了Selenium库来抓取虎牙直播的弹幕。首先,通过引入必要的库和设置浏览器选项,然后使用`webdriver.Chrome()`创建一个Chrome浏览器实例,并打开虎牙直播的网页。接下来,根据不同版本的代码,使用不同的方式来获取弹幕。 在第一版代码中,使用`find_elements_by_xpath`方法来定位弹幕元素,并通过遍历获取每个弹幕的文本内容。 在第二版代码中,使用`find_elements_by_class_name`方法来定位弹幕元素,并通过遍历获取每个弹幕的文本内容。同时,使用一个列表`bbb`来存储已经获取过的弹幕,以避免重复获取。 在第三版代码中,除了使用`find_elements_by_class_name`方法和列表`bbb`来获取和存储弹幕外,还添加了一个判断条件,当`bbb`列表的长度超过20时,删除最早的弹幕,以保持列表的长度不超过20。 综上所述,这段代码使用Selenium库来抓取虎牙直播的弹幕,通过定位弹幕元素并遍历获取弹幕的文本内容。不同版本的代码在处理重复弹幕和控制弹幕数量方面有所不同。 #### 引用[.reference_title] - *1* *2* [Python Selenium简单爬取虎牙直播弹幕(仅学习)](https://blog.csdn.net/weixin_47190827/article/details/113351024)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [huya弹幕提取小尝试](https://blog.csdn.net/import_hair/article/details/123755909)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值