教你用python爬蟲爬blibili網站彈幕!

千鋒武漢發表於2021-03-22

嗶哩嗶哩眾所周知是彈幕的天堂,影片觀看人數越多,彈幕也就越多。今天小千就來教大家如何去使用Python開發一個爬蟲來爬取B站的彈幕資料。

1、彈幕哪裡找?

平常我們在看影片時,彈幕是出現在影片上的。實際上在網頁中,彈幕是被隱藏在原始碼中,以XML的資料格式進行載入的:

XML和JSON、YAML一樣是一種通用的標記資訊表達方式,可以簡單的理解為一種記錄資料的格式。XML和描述網頁的語言HTML非常像,所以你會在截圖中看到<d></d>這樣的標籤。

那麼上圖這個彈幕檔案的url是什麼呢?

它以一個固定的url地址+影片的cid+.xml組成。只要找到你想要的影片cid,替換這個url就可以爬取所有彈幕了(b站大部分網頁給出的字幕限制是1000條)。

一個影片的cid在哪裡呢?右鍵網頁,開啟網頁原始碼,搜尋cid”就能找到:

cid在網頁原始碼中是一個很常見的片語,而我們要尋找的正確的cid都會寫成"cid":xxxxxxxx的形式。為了縮小搜尋範圍,在後方加上一個引號會更快搜尋到。

有了正確的cid,拼好url,我們就來寫爬蟲吧!

2、爬蟲庫到底是什麼?

基本所有初學Python爬蟲的人都會接觸到requests、BeautifulSoup這兩個工具庫,這是兩個常用基礎庫。requests用於向網站url發起請求,以獲取網頁程式碼;BeautifulSoup用於將HTML/XML內容解析,並提取裡面的重要資訊。

這兩個庫模擬了人訪問網頁,讀懂網頁並複製貼上出對應資訊的過程,能夠批次地、快速地完成資料爬取。

3、開始爬取

觀察網頁,可以發現,所有的彈幕都放在了<d>標籤下,那麼我們需要構建一個程式獲取所有的<d>標籤:

第一步,匯入requests庫,使用request.get方法訪問彈幕url:

import requests

#獲取頁面資料html

url=r'

r=requests.get(url)#訪問url

r.encoding='utf8'

第二步,匯入BeautifulSoup庫,使用lxml解析器解析頁面:

from bs4 import BeautifulSoup

#解析頁面

soup=BeautifulSoup(r.text,'lxml')#lxml是常用的解析器,需要提前使用pip工具安裝lxml庫

d=soup.find_all('d')#找到所有頁面的d標籤

#print(d)

這樣操作後,所有藏在d標籤裡的彈幕內容就被python抓取到了 :

#解析彈幕,將彈幕、網址、時間整理為字典,最後加和成列表,共1000條資料

資料整理之後我們還可以進行分析,例如詞彙量出現頻率等等,這個可以根據需求來自由處理即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2764111/,如需轉載,請註明出處,否則將追究法律責任。

相關文章