近幾年,直播平台蠻火的。小時候,經過各種日漫的洗禮,在直播平台自然而然的就盯上了B站。
目前還是python菜鳥一枚,各位大佬請輕拍。
最終效果圖:
閑話不說,我們來一步步解析B站的彈幕。
工具:python3.5 平台:windows10
首先,瀏覽器打開B站直播180房間(2017-07-07更新:少寒主播已離開B站在YY直播,180房間號已不能訪問),房間主播是:少寒Shine。
接着,按f12獲取網站的源代碼
看<head>標簽中,編碼是utf-8;<title>標簽是房間的標題,正是程序所需要的,所以我們只需要用python提取<title></title>這個標簽的內容就行了。
思路:
1、導入urllib.request庫和re庫
2、獲取直播的地址。
3、用到python中urllib.request庫來請求網頁,獲取源代碼並解碼。
4、用正則表達式或者其他方式提取所需要內容。
5、打印所提取的內容。
鑒於正則表達式提取的代碼比較長,我選擇使用xpath一步到位。xpath是從XML 文檔中提取信息,所以要將請求的網頁轉換成xml文檔。xml是第三方庫,而不是python自帶的庫,那么就需要安裝xml。python3中xml庫的名字叫lxml,具體安裝過程請自行百度一下。
那么,我們重新理一下思路:
1、導入urllib.request庫和lxml庫
2、獲取直播的地址。
3、用到python中urllib.request庫來請求網頁,獲取源代碼並解碼。
4、將網址轉換成xml格式。
5、用xpath來提取<title>中的內容。
6、打印所提取的內容。
代碼:
1 import urllib.request 2 from lxml import etree 3 4 roomId = input('請輸入房間號:') 5 roomUrl = 'http://live.bilibili.com/'+ str(roomId) 6 webPage=urllib.request.urlopen(roomUrl) 7 html = webPage.read().decode('utf-8') 8 html = etree.HTML(html) 9 title = html.xpath('//title/text()') 10 print('房間名稱:%s'%title[0])
效果圖:
不過,這段代碼是有bug的,假如我輸入的房間號不是數字或者我輸入的數字並不是一個直播間的房間號,那么程序會報錯
遇到這種報錯,我們就解決bug,讓這種錯誤不再出現。
系列下一章:python - bilibili(二)房間號格式出錯