利用python爬取某直播网站实时弹幕并分析

这里写自定义目录标题

技术选择以及思路

首先,获取实时弹幕有两种办法:
1. 正经渠道,去通过直播网站公开的开放平台去找对应的api,这种方案难度不高,但是获得授权的难度很高。
2. 就是想办法从网站上直接拿,毕竟网站么,都是把html传来传去,直接解析html肯定是可行的。
那既然是解析html又是用python那难道用requests神器? 结果我试了下发现不行,原因大概是requests发起的get请求在直播网站加载js访问弹幕服务器的时候就结束了,导致获取到的html根本没有弹幕。所以要找一种持久的家伙那就是自动测试神器selenium!这玩意儿的具体使用去搜搜教程上手还是很快的。但要学好css选择器才算上手,不然用的会比较痛苦。

分析

我们分析某直播网站的html在这里插入图片描述
显然这个是一个在ul标签下一只往里面插入新增的弹幕,再分析li

<li id="d4bcdd57-8b1b-4755-a164-db23a71d763f" class="Barrage-listItem">
            <div class="Barrage-notice--normalBarrage">
                
                
        <span class="UserLevel UserLevel--9" title="用户等级:9">
        </span>
    <span class="RoomLevel RoomLevel--13" title="房间等级:13"></span>
            
            <span class="Barrage-nickName Barrage-nickName--blue js-nick" title="放开那个女魔法师" data-uid="127456" style="">
                放开那个女魔法师:
            </span>
        
        <span class="Barrage-content" data-chatid="9270e057e71544cd8dea1b0300000000">
            经典4转1
        </span>
    
            </div>
        </li>

从我截取下来的html就可以很明显的分析出来那个是哪个。想要啥就用css选择器拿啥。

当然我试验过用selenium自带的html选择器去获取内容的话性能貌似很差。所以我直接把html拿来自己分析。

danmu = driverChrome.find_element_by_id('js-barrage-list')
danmu_lis = danmu.find_elements_by_css_selector('li')
danmuHtml = str(danmu_lis[-1].get_attribute('innerHTML'))

python解析HTML当然是BeautifulSoup这个好东西了,利用BeautifulSoup(htmlString,‘lxml’)解析的话,性能还不错。
在这里插入图片描述

使用selenium爬取虎牙直播间弹幕的大致流程如下: 1. 安装selenium库和对应的浏览器驱动(如ChromeDriver)。 2. 打开浏览器,并访问虎牙直播间的页面。 3. 利用selenium模拟用户操作,点击“登录”按钮,输入账号密码进行登录。 4. 定位弹幕输入框,利用selenium模拟输入弹幕并发送。 5. 利用selenium定位弹幕显示区域,获取其中的弹幕信息。 6. 不断循环执行第5步,可以实现持续爬取弹幕的功能。 下面是一个简单的示例代码,可以爬取指定虎牙直播间弹幕: ```python from selenium import webdriver import time # 设置浏览器选项 options = webdriver.ChromeOptions() options.add_argument('--headless') # 无头模式,不显示浏览器界面 # 打开浏览器 driver = webdriver.Chrome(options=options) # 访问虎牙直播间 driver.get('https://www.huya.com/123456') # 将123456替换成指定直播间的ID # 登录 login_button = driver.find_element_by_css_selector('.login-btn') login_button.click() time.sleep(1) # 等待登录弹窗加载 username_input = driver.find_element_by_css_selector('#loginU') password_input = driver.find_element_by_css_selector('#loginP') username_input.send_keys('your_username') # 将your_username替换成自己的虎牙账号 password_input.send_keys('your_password') # 将your_password替换成自己的虎牙密码 submit_button = driver.find_element_by_css_selector('.login-btns .login-btn') submit_button.click() time.sleep(3) # 等待登录完成 # 发送弹幕 danmu_input = driver.find_element_by_css_selector('.msg-input textarea') danmu_input.send_keys('hello, world!') send_button = driver.find_element_by_css_selector('.msg-send-btn') send_button.click() # 获取弹幕信息 while True: danmu_list = driver.find_elements_by_css_selector('.msg-normal') for danmu in danmu_list: print(danmu.text) time.sleep(1) # 等待1秒后再次获取弹幕信息 ``` 注意,上述代码中的账号密码需要替换成你自己的虎牙账号密码,而直播间的ID需要替换成你要爬取直播间的ID。此外,由于虎牙网站对爬虫有一定的限制,建议在爬取时加入一些限制(如适当增加等待时间、降低爬取频率等),以避免被封禁账号。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值