
#!/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()
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)