Python3 呼叫鬥魚開放API爬取彈幕

2021-09-05 18:49:31 字數 1669 閱讀 6744

一些要求具體參考鬥魚的開放api協議。

# -*- coding:utf-8 -*-

import socket

import re

import time

import struct

from multiprocessing import process

# 根據鬥魚開放api協議,鏈結所必需的一些東西。

url = 'openbarrage.douyutv.com'

port = 8601

host = socket.gethostbyname(url)

s = socket.socket(socket.af_inet, socket.sock_stream)

s.connect((host, port))

ticks = time.asctime(time.localtime(time.time()))

# 處理資料便於傳送

def pack_msg(msg):

code = 689

msg_len = len(msg) + 8

return struct.pack("iihbb", msg_len, msg_len, code, 0, 0) + msg.encode('utf-8')

# 保持心跳持續登入

def keep_alive():

s.send(pack_msg('type@=mrkl/' + '\0'))

time.sleep(40)

# 登入請求,登入606118房間

login = 'type@=loginreq/roomid@=606118/\0'

s.send(pack_msg(login))

# 入組請求

joingroup = 'type@=joingroup/rid@=606118/gid@=-9999/\0'

s.send(pack_msg(joingroup))

# 成功後伺服器返回的資訊

data = s.recv(1024)

# 處理資訊的方法

danmu = re.compile(b'type@=chatmsg.*?/nn@=(.*?)/txt@=(.*?)/')

barrage_dic = {}

# 篩選返回訊息,彈幕暱稱

def barrage():

while true:

sss = danmu.findall(s.recv(1024))

for i in sss:

barrage_dic['暱稱'] = i[0].decode(encoding='utf-8', errors='ignore')

barrage_dic['彈幕內容'] = i[1].decode(encoding='utf-8', errors='ignore')

print('【' + barrage_dic['暱稱'] + '】:' + barrage_dic['彈幕內容'])

# 並行執行

if __name__ == '__main__':

p1 = process(target=keep_alive(), args=())

p2 = process(target=barrage(), args=())

p1.start()

p2.start()

Python3爬蟲 鬥魚彈幕爬蟲

在網上找到了乙份鬥魚彈幕伺服器第三方接入協議v1.6.2,有了第三方介面,做起來就容易多了。鬥魚後台協議頭設計如下 這裡的訊息長度是我們傳送的資料部分的長度和頭部的長度之和,兩個訊息長度是一樣。然後要注意的是該協議使用的是小端整數,所以我們要對資料進行處理後再傳送,這裡可以使用int.to byte...

日常Python 3 呼叫函式

任務.輸出每日一貼 在idle中建立乙個名為function tips.py的檔案,然後在該檔案中建立乙個名稱為function tips的函式,在該函式中,從勵志文字列表中獲取一條勵志文字並輸出,最後再呼叫函式function tips 如下 coding gbk def function tip...

python3呼叫http介面

最近在寫python呼叫介面的服務,寫了乙個呼叫介面的函式,如下 param inputdata 單個樣本的輸入引數,是json格式的資料 return 單個樣本的探真查詢變數結果資料 呼叫介面 介面有正確的資料才讀入,否則為空 if res code 0000 res data json.load...