王bo wangbo

王bo wangbo,第1张

#!/usr/bin/env python3
# coding=utf-8
# author:sakuyo
#----------------------------------

import csv,time,sys,signal
import serial
#import os
#import commands
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

class Huya(object):
    def SaveToCSV(self,fileName,headers,contents):
        titles = headers
        data = contents
        #csv用utf-8-sig来保存
        with open(fileName+'.csv','a',newline='',encoding='utf-8-sig') as f:
            writer = csv.DictWriter(f,fieldnames=titles)
            writer.writeheader()
            writer.writerows(data)
            print('写入完成!')

class HuyaLive(Huya):

    def __init__(self,target):
        self.target = target
        self.barrageList = {}
    
    def Connect(self):
        chrome_options = Options()
        chrome_options.add_argument('--headless')
        chrome_options.add_experimental_option("detach", True)
        driver = webdriver.Chrome(options=chrome_options)
        url  ='https://live.douyin.com/'+self.target
        driver.get(url)
        time.sleep(5)
        lastlen  = 0
        while True:
            time.sleep(1)
            chatRoomList = driver.find_element_by_id("_douyin_live_scroll_container_")
            chatMsgs = chatRoomList.find_elements_by_class_name("webcast-chatroom___item")
        len1 = len(chatMsgs)
            #print(len1)
            content = {}
            try:
                if lastlen != len1:
                    hSend = chatMsgs[len1-2].find_element_by_class_name("UPfiLZob")
                    content['username'] = hSend.find_element_by_class_name("tfObciRM").text
                    #print(content['username'])
                    content['say'] = hSend.find_element_by_class_name("webcast-chatroom___content-with-emoji-text").text
                    print(content['username']+content['say'])
                    #os.system('sudo python 1.py')
                    lastlen = len1
                else :
                    a=0
            except:
                pass
            #print(content['username'].decode('UTF-8').encode('GBK') ,'说',content['say'].decode('UTF-8').encode('GBK') )

    def SaveToBarrageList(self,dataId,content):
        if dataId in self.barrageList or not content:
            pass
        else:
            content['time'] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            self.barrageList[dataId] = content
            #print(dataId,content)

def QuitAndSave(signum, frame):
    print ('catched singal: %d' % signum)
    hyObj.SaveToCSV('test',['username','time','msg','gift','num'],hyObj.barrageList.values())
    sys.exit(0)


if __name__ == '__main__':
    #信号监听
    signal.signal(signal.SIGTERM, QuitAndSave)
    signal.signal(signal.SIGINT, QuitAndSave)

    hyObj = HuyaLive('405446124789')
    hyObj.Connect()

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/942808.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-18
下一篇2022-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存