沧浪之水濯我心 发表于 2022-1-17 22:55

【原创】基于Python+selenium的自动赠送虎粮

本帖最后由 沧浪之水濯我心 于 2022-1-17 23:00 编辑

本代码使用chromedrive自动化实现自动送虎粮,事实上意义不是很大,需要电脑,需要自己点(当然也可以打包exe计划任务运行,总归是麻烦的),发出来仅供交流!!

1.如需自定义赠送对象,请在zbj = 'https://www.huya.com/dongxiaosa'中替换直播间地址(董伟武功天下第一)
2.食用本代码需要已经登录qq,你也可以自己改,通过输入qq账号及密码来登录。因为还需要密码登录需要验证,所以就未采用此方法
3.请在qq = "img_out_******"中,将******替换为你已经登录的qq
4.环境需要自己配置好(不会配置请看Python 3网络爬虫开发实战 ,崔庆才著这本书,前面有)
5.我也想用requests直接赠送,弄好了还能放云函数里面。因为……我是真抓包不到送虎粮接口,这个比较复杂,本菜鸡做不到!


代码如下:
# -*- coding:utf-8 -*-
import time
from selenium import webdriver

url = 'https://www.huya.com'
zbj = 'https://www.huya.com/dongxiaosa'
qq = "img_out_******"


def init_program():
    options = webdriver.ChromeOptions()
    options.add_argument("--disable-blink-features=AutomationControlled")
    browser = webdriver.Chrome(options=options)
    browser.maximize_window()
    browser.implicitly_wait(40)
    return browser


def login(browser):
    browser.get(url)
    mainWindow = browser.current_window_handle
    element = browser.find_element_by_class_name("LoginHd--1Jf6S0CCU3DUkJdjVqVn3")
    element.click()
    browser.switch_to.frame("UDBSdkLgn_iframe")

    loginIcon = browser.find_element_by_class_name("input-login")
    loginIcon.click()

    qqIcon = browser.find_element_by_class_name("qq-icon")
    qqIcon.click()

    for handle in browser.window_handles:
      # 先切换到该窗口
      browser.switch_to.window(handle)
      # 得到该窗口的标题栏字符串,判断是不是我们要操作的那个窗口
      if 'QQ' in browser.title:
            # 如果是,那么这时候WebDriver对象就是对应的该该窗口,正好,跳出循环,
            browser.switch_to.frame("ptlogin_iframe")
            # 需要填你自己的QQ,
            qqSpan = browser.find_element_by_id(qq)
            qqSpan.click()
            break
    browser.switch_to.window(mainWindow)
    time.sleep(2)


def send_huliang(browser):
    browser.get(zbj)
    time.sleep(5)
    element = browser.find_element_by_xpath('//*[@id="player-recharge-btn"]')
    element.click()
    time.sleep(3)
    try:
      iframe = browser.find_element_by_xpath('/html/body/div/div/div/iframe')
    except:
      iframe = browser.find_element_by_xpath('/html/body/div/div/div/iframe')

    browser.switch_to.frame(iframe)
   
    #进入包裹界面
    bg = browser.find_element_by_xpath('//*[@id="nav"]/li/a')
    bg.click()
    time.sleep(5)

    #找到礼物栏第一个,我只有每日免费虎粮
    hl = browser.find_element_by_xpath('//*[@id="myWrap"]/div/ul/li')
    hl.click()
    time.sleep(5)
   
    #本段代码实现虎粮全送。当然你可以尝试自定义送多少个
    send = browser.find_element_by_xpath('//*[@id="sendToAnchor"]/div/div/a')
    send.click()

#本段代码实现自动发弹幕,需要配置好PoetryAdaptation.txt弹幕文本
#这块代码没有调试,需要使用请自行调试
def send_msg(browser):
    browser.get(zbj)
    msgBox = browser.find_element_by_id("pub_msg_input")
    msgbtn = browser.find_element_by_id("msg_send_bt")
    time.sleep(10)
    a = 1
    while a == 1:
      # 这里使用了从文件读取写好的文字做弹幕
      with open("PoetryAdaptation.txt", "r", encoding="utf-8") as f:
            for line in f.readlines():
                msgBox.send_keys(line)
                line = line.strip('\n')# 去掉列表中每一个元素的换行符
                msgbtn.click()
                time.sleep(30)
    pass


if __name__ == "__main__":
    browser = init_program()
    login(browser)
    send_huliang(browser)
    # send_msg(browser)

w15098078568 发表于 2022-3-4 09:27

沧浪之水濯我心 发表于 2022-3-3 16:35
包裹在 充值-包裹里

我找到了,但是我只会用不会改哈哈

fengziyue521 发表于 2022-1-17 23:29

等着试试

坑爹酱、 发表于 2022-1-18 02:03

董伟?几年前经常看玩单机挺有意思的

istat 发表于 2022-1-18 07:16

学习了,谢谢分享。

zm55555 发表于 2022-1-18 09:16

蛮好玩的

ghoob321 发表于 2022-1-18 09:34

玩单机挺有意思的

金冰 发表于 2022-1-18 09:38

w15098078568 发表于 2022-3-3 16:08

现在web端没有背包了,送不了了

沧浪之水濯我心 发表于 2022-3-3 16:35

w15098078568 发表于 2022-3-3 16:08
现在web端没有背包了,送不了了

包裹在 充值-包裹里
页: [1] 2
查看完整版本: 【原创】基于Python+selenium的自动赠送虎粮