python 斗鱼弹幕的爬取一(selenium)

本文介绍了一种使用Selenium爬取斗鱼直播平台弹幕数据的方法,通过无头浏览器模式和图像加载禁用提升效率,实现了弹幕信息的实时抓取,并将数据保存至本地TXT文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

针对弹幕的爬取我们如果只需要获取看到的网页里面的而数据,使用selenium就能实现,对于直播平台来说,往往有第三方平台api让你获取数据(可以获取发弹幕,发弹幕者的名字礼物等等,这需要客户端向弹幕服务器发送登录请求,心跳信息的发送等等)今天只获取弹幕信息储存到txt文件中,上代码,上图片
#!/usr/bin/env python3
# _*_ coding: utf-8 _*_
# auther hou
import time
import random
from selenium import webdriver
chrome_options = webdriver.ChromeOptions()

# 使用headless无界面浏览器模式
chrome_options.add_argument('--headless')

# 设置配置文件不加载图片增加爬虫效率
prefs = {"profile.managed_default_content_settings.images": 2}
chrome_options.add_experimental_option("prefs", prefs)
browser = webdriver.Chrome(chrome_options=chrome_options)

class DoYu_DanMu():

    def __init__(self) -> None:
        self.url = 'https://www.douyu.com/' # 初始化斗鱼路径为下面拼接url

    def GetIdUrl(self,Id):
        Id_Href = self.url+str(Id)
        browser.get(Id_Href)  # 浏览器请求到直播房间中
        while True:
            time.sleep(random.random()*3)
            try:
                ls = browser.find_elements_by_xpath('.//div[@class=" danmu-6e95c1"]/div/div')
                for danmu in ls :
                    if len(danmu.text) > 0:
                        try:
                            print(danmu.text)
                        except:
                            pass
                        self.save(danmu.text)
                    else:
                        continue
            except:
                pass
            # except:
            #     time.sleep(random.random()*6)
            #     ls = browser.find_elements_by_xpath('.//div[@class=" danmu-6e95c1"]/div/div')
            #
            #     for danmu in ls:
            #         if len(danmu.text) > 0:
            #             try:
            #                 print(danmu.text)
            #             except:
            #                 pass
            #             self.save(danmu.text)
            #         else:
            #             continue
    def save(self,danmus):
        with open('hcf.txt','a+',encoding='utf-8')as f:
            f.write(danmus+'\n')

if __name__ == '__main__':
    num = input('请输入要爬取弹幕的房间号')  # 22619
    DoYu = DoYu_DanMu()
    DoYu.GetIdUrl(num)

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值