python 爬蟲 b站直播彈幕獲取

2021-09-11 15:46:03 字數 2101 閱讀 1878

本文章的**可能已經過時了,請參考最新**:

博主本人在空閒的時候比較喜歡看一些遊戲直播,發現好多主播都在使用彈幕姬,便對彈幕姬的原理產生了興趣,打算自己動手做乙個彈幕播報的程式

import requests

import win32com.client

import time

old_list =

#建立乙個old_list列表用於輔助後面的text_danmu方法提取新訊息

class danmu():

#定義乙個danmu類

def __init__(self):

self.url = ""

self.headers =

self.data =

#在 __init__方法中先定義好要使用的請求url,請求頭,和請求引數

def speak_text(self,text):

#定義乙個speak_text方法,並建立形參text,用於作為接下來讀取的文字

speak = win32com.client.dispatch("sapi.spvoice")

#建立發聲物件

speak.speak(text)

#使用發生物件讀取文字

def text_danmu(self,html):

#建立乙個text_danmu方法,用於提取彈幕資訊

global old_list

#設定變數作用域,使得該方法可以修改全域性變數old_list的值

temp_list =

#建立乙個temp_list列表用於作為臨時列表輔助提取彈幕訊息

for text in html["data"]["room"]:

#for迴圈提取html字典中巢狀的子字典data中巢狀的子字典room的內容賦值給text變數

#這個html字典來自於get_danmu方法傳遞

#將變數text字典中text鍵的值新增到temp_list中

if temp_list == old_list:

pass

#檢測temp_list臨時列表的內容和old_list是否相同,如果相同則跳過

else:

for text_number in range (1,11):

#建立for迴圈一次將1到10的數字賦給text_number

if "".join(temp_list[:text_number]) in "".join(old_list):

pass

#使用join方法以""為分割符提取temp_list切割後的列表的內容

#使用join方法以""為分割符提取old_list列表的內容

#比較內容是否相同,如果相同則跳過

else:

try:

print (temp_list[text_number-1])

except:

pass

else:

self.speak_text(temp_list[text_number-1])

#嘗試列印temp_list指定索引的內容,如果報錯則跳過

#否則呼叫speak_text方法,進行文字轉語言

old_list = temp_list[:]

#將temp_list的值賦給old_list,進行更新舊資訊列表

def get_danmu(self):

html = requests.post(url=self.url,headers=self.headers,data=self.data)

html.json()

self.text_danmu(eval(html.text))

#定義get_danmu方法

#使用requests.post方法獲取網頁內容

#將網頁返回值以json的資訊載入

#呼叫之前定義的text_danmu方法,傳遞eval處理後的網頁返回值的文字內容

bzhan = danmu()

#建立乙個bzhan例項

while true:

bzhan.get_danmu()

time.sleep(3)

#每三秒鐘呼叫乙個bzhan例項的get_danmu方法

python實現b站直播自動傳送彈幕功能

python 3.6 pycharm import requests import time from tkinter import import random 首先你要登陸b站賬號,然後隨便點選乙個直播間,這裡建議先選擇人氣少的,彈幕少的,這樣方便檢視效果 如上圖所示先開啟開發者工具,定位到xhr...

python 爬蟲 b站彈幕爬蟲

coding utf 8 獲取bilibili直播間彈幕 房間號從網頁源 中獲取 開啟直播畫面後,按ctrl u 開啟網頁源 按ctrl f 搜尋 room id 搜到的 room id 1016中,1016就是房間號 獲取不 間的彈幕 修改 第26行的roomid的值為對應的房間號 import ...

Python3爬蟲 鬥魚彈幕爬蟲

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