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站直播间的小姐姐占为己有的主要内容,如果未能解决你的问题,请参考以下文章