selenium + python Douyu robot barrage

#coding=utf-8

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
import time
import json
import requests
import sys

class Robot:
    def __init__(self):
            self.browser = webdriver.Firefox()


    def login_with_code(self,usname,pwd):

        url = 'https://passport.douyu.com/index/login?passport_reg_callback=PASSPORT_REG_SUCCESS_CALLBACK&passport_login_callback=PASSPORT_LOGIN_SUCCESS_CALLBACK&passport_close_callback=PASSPORT_CLOSE_CALLBACK&passport_dp_callback=PASSPORT_DP_CALLBACK&type=login&client_id=1&state=https%3A%2F%2Fwww.douyu.com%2F2009&source=click_topnavi_login'
        self.browser.get(url)
        self.browser.maximize_window()


        button1 = self.browser.find_element_by_class_name('js-qrcode-switch')
        button1.click()

        button2 = self.browser.find_element_by_xpath("//div[@class='loginbox-login-subtype']/span[@data-subtype='login-by-nickname']")
        button2.click()

        input1 = self.browser.find_element_by_name('username')
        input1.send_keys(usname)

        input2 = self.browser.find_element_by_name('password')
        input2.send_keys(pwd)

        time.sleep(2)   #avoid the protection of douyu

        #button3 = self.browser.find_element_by_xpath("//div[@class='login-sbt-con']/input[@type='submit']")
        button3 = self.browser.find_element_by_class_name('btn-sub')
        button3.click()


        print('45...')
        time.sleep(15)
        print('30...')
        time.sleep(15)
        print('15...')
        time.sleep(12)
        print('3...')
        time.sleep(1)
        print('2...')
        time.sleep(1)
        print('1...')
        time.sleep(1)

        print ("Verification Code finish.......")

        while True:
            if(self.ifLogin()):
                print('login success')
                cookie_saved = self.browser.get_cookies()
                fp = open('cookie.json','w')
                json.dump(cookie_saved,fp)
                fp.close()
                break
            break


    def login_with_cookie(self,cookies):
        self.browser.get('https://www.douyu.com/directory/myFollow')
        self.browser.maximize_window()
        for cookie in cookies:
            self.browser.add_cookie(cookie)
        self.browser.refresh()


    def sendM(self,room,message):

        url = 'https://www.douyu.com/' + room
        self.browser.get(url)

        input_mes = WebDriverWait(self.browser,10).until(lambda x:x.find_element_by_class_name('ChatSend-txt'))
        input_mes.send_keys(message)

        button_send = WebDriverWait(self.browser,10).until(lambda y:y.find_element_by_class_name('ChatSend-button '))
        button_send.click()



    def ifLogin(self):
        if 'PHPSESSID' in str(self.browser.get_cookies()):
            return True
        else:
            return False


def main():

    username = 'XXXXXX'
    password = 'XXXXXX'
    room = '1256569'
    message = 'ceeeeeeeeeeeeeeb'
    robot = Robot()

    try:
        fp = open('cookie.json','r')
        cookies = json.load(fp)
        fp.close
        print("login with cookie...")
        robot.login_with_cookie(cookies)
    except:
        print("login with code...")
        robot.login_with_code(username,password)
    robot.sendM(room,message)

if __name__ == '__main__':
    main()

The first landing to fill in username, password, manually fill the mobile phone to receive verification codes, and then will record the cookie, then automatically log on using the local cookie.

After further perfection of detail.

Guess you like

Origin www.cnblogs.com/Aiden-/p/11489465.html