針對彈幕的爬取我們如果只需要獲取看到的網頁里面的而數據,使用selenium就能實現,對于直播平臺來說,往往有第三方平臺api讓你獲取數據(可以獲取發(fā)彈幕,發(fā)彈幕者的名字禮物等等,這需要客戶端向彈幕服務器發(fā)送登錄請求,心跳信息的發(fā)送等等)只獲取彈幕信息儲存到txt文件中,上代碼,上圖片
import time
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()
# 使用headless無界面瀏覽器模式
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--disable-gpu')
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(chrome_options=chrome_options)
url = 'https://www.douyu.com/'
def getDanmu(homeId):
homeHref = url+str(homeId)
browser.get(homeHref)
while 1:
time.sleep(2)
try:
for i in browser.find_elements_by_xpath('.//div[@class=" danmu-6e95c1"]/div/div'):
if len(i.text) > 0:
try:
print(i.text)
except:
pass
saveDanmu(i.text)
else:
continue
except:
time.sleep(2)
for i in browser.find_elements_by_xpath('.//div[@class=" danmu-6e95c1"]/div/div'):
if len(i.text) > 0:
try:
print(i.text)
except:
pass
saveDanmu(i.text)
else:
continue
def saveDanmu(danmu):
with open('danmu.txt', 'a+', encoding='utf-8')as f:
f.write(danmu+'\n')
if __name__ == '__main__':
num = input('請輸入需要查詢的房間號:')
getDanmu(num)