某鱼弹幕抽奖脚本

斗鱼弹幕抽奖脚本

使用步骤

  1. 安装selenium

pip install selenium

  1. 安装chromeDriver
    chromedriver的版本一定要与chrome的版本一致
    在chrome浏览器中输入chrome://version/

下载地址

http://npm.taobao.org/mirrors/chromedriver/

  1. 解压压缩包,找到chromedriver.exe复制到chrome的安装目录。复制chromedriver.exe文件的路径并加入到电脑的环境变量中去
  2. 配置config文件,输入弹幕抽奖的房间号,发言频率以及抽奖时间
  3. 打开cmd ,切换到下载目录的文件夹,输入 python ./sendMsg.py执行
  4. 第一次执行需要进行扫码登录,需要在20s内在弹出的浏览器网页进行扫码登录
  5. 等待中奖, hhh!
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.common.exceptions import TimeoutException
import time
import json
import getCookies
import os
import myConfig

browser = webdriver.Chrome()
wait = WebDriverWait(browser, 10)

def login():
    #从文本读取cookies
    with open("./cookies.txt",'r', encoding='utf-8') as f:
        cookiesList = json.loads(f.read())
    f.close()

    browser.get("http://www.douyu.com/" + myConfig.ROOMNUM)
    for cookie in cookiesList:
        cookies_dict = {
            'domain':'.douyu.com',
            'httpOnly':False,
            'name':cookie.get('name'),
            'path':'/',
            'secure':False,
            'value':cookie.get('value')
        }
        #将cookie添加到browser中
        browser.add_cookie(cookies_dict)
    #刷新网页
    browser.refresh()

def sendMessage():
    try:
        input = wait.until(
            EC.presence_of_element_located((By.CSS_SELECTOR, "#js-player-asideMain > div > div.layout-Player-chat > div > div.ChatSpeak > div.ChatSend > textarea"))
        )
        #获取聊天框当前文本,即抽奖口令
        currentText = input.get_property('placeholder')
        
        input.clear()
        input.send_keys(currentText)
        input.send_keys(Keys.ENTER)

    except TimeoutException:
        return sendMessage()

def main():
    #判断cookies文件是否存在
    if not os.path.exists("./cookies.txt"):
        getCookies.get_cookies()
        print("获取cookie成功")
    login()
    for i in range(0,myConfig.TIMES//myConfig.FREQUENCY):
        print("第"+str(i+1)+"次参与抽奖")
        sendMessage()
        time.sleep(myConfig.FREQUENCY)

if __name__ == '__main__':
    main()



完整代码见github

www.github.com/heipi666/DouYuLottery

你可能感兴趣的:(斗鱼抽奖脚本)