20行Python代码!把B站直播间的小姐姐占为己有

Posted 呆呆敲代码的阿狸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20行Python代码!把B站直播间的小姐姐占为己有相关的知识,希望对你有一定的参考价值。

深夜,当我一个人拿着电脑打开小姐姐的直播间准备观赏的时候

突然直播的界面中传来各种各样的广告推荐和弹幕信息

遮挡住了小姐姐的脸庞,还关不掉?

这是脑子里就有了一个想法,何不爬取小姐姐直播间的信息源,然后通过本地的视频流播放器来收看小姐姐的直播呢?

于是就马上实行了这个计划,毕竟在不做就要天亮了

第一步:

首先,通过对于B站直播网页的分析,来获取小姐姐直播间的直播信号源。

打开我最爱的这位,如下图所示:

打开“开发者模式”,找到Network选项,点击XHR组件,找到live开头的标签内容,双击之后,就可以得到请求的信息。

可以看到,这个Request URL就是直播的信号源。

复制这个信号源地址,然后就可以通过本地的视频流播放器进行直播播放。

其实不用代码也可以

还有一种方式就是抓取直播信号源

直接上代码:

import requests,bs4,re,time
import xlwings as xw
from selenium import webdriver
from bs4 import BeautifulSoup

roomlist = []


# 获取bilibili动态页面
def gethtml(url):

    #n = 0

    try:

        driver = webdriver.Chrome()

        driver.get(url)

        button_view = driver.find_element_by_xpath('//*[@id="room-list-section"]/div[1]/div/div[1]/div[2]')

        button_view.click()

        
        
        while True:

            try:

                button = driver.find_element_by_xpath('//*[@id="room-list-section"]/div[2]/div[1]/span[1]')

                time.sleep(1)

                #n += 1
                
                button.click()

            except:

                break
        

        html = driver.page_source

        file_html = open(r'f:\\workspace\\example\\livehtml.txt','w+',encoding='utf-8')

        file_html.write(html)

        file_html.close()

        driver.quit()

        return html

    except:

        print('执行异常')

# 获取room详情并储存在一个2维列表里

def getroomlist(html):

    soup = BeautifulSoup(html,"html.parser")

    for li in soup.find('section',id = 'room-list-section').ul:

    # 获取房间的主播名和房间名

        pre_rt = r'title=".*"'
        pattern1 =re.compile(pre_rt)
        rt_match =re.findall(pattern1,str(li))

        try:

            if len(rt_match) == 0:
                continue
            else:
                room_title = rt_match[0].split('"')[1]
                anchor_name = rt_match[1].split('"')[1]
        


    # 获取房间的人气值

            pre_view = r'>\\d+<'
            pattern2 = re.compile(pre_view)
            vc_match = pattern2.search(str(li))
            if vc_match == None:
                continue
            else:
                pre_vc_value = vc_match.group(0)
                vc_value = re.sub(r'>|<','',pre_vc_value)
                roomlist.append([anchor_name,room_title,vc_value])
        except:
            print(anchor_name)
            break
  

    return roomlist

    
# 将房间信息保存在xlsx文件里方便后期处理和存储
def savelivelist(livelist):

    app = xw.App(visible=True,add_book=False)

    app.display_alerts = False

    app.screen_updating = False

    wb = app.books.open(r'f:\\workspace\\example\\live.xlsx')

    sheet1 = wb.sheets['sheet1']

    sheet1.range('A1').value = ['主播名','房间名','人气值']

    sheet1.range('A2').value = livelist

    wb.save()

    wb.close()

    app.quit()

    print ('完成存储')

# 主函数
def main():
    url = 'http://live.bilibili.com/all'

    html = gethtml(url)

    livelist = getroomlist(html)

    #print(len(livelist))

    savelivelist(livelist)

main()

以上是关于20行Python代码!把B站直播间的小姐姐占为己有的主要内容,如果未能解决你的问题,请参考以下文章

20行Python代码!把B站直播间的小姐姐占为己有

Python:20行代码爬取高质量帅哥美女视频,让你一次看个够

模仿UP主,用Python实现一个弹幕控制的直播间!

用 Python 获取 B 站播放历史记录

安卓手机在B站怎么直播

60 行代码,10000 个虎牙小姐姐视频来袭!