爬取B站20萬+條彈幕,我學(xué)會了如何成為B站老司機
本文含?3420?字,27?圖表截屏
建議閱讀?10分鐘
前言
彈幕分析
戶外區(qū)-華農(nóng)兄弟


,其次就是村霸、危、億點點、死因?等專屬與華農(nóng)兄弟的梗,還有類似于人言否、寸草不生、兄弟敢怒不敢言?等關(guān)鍵詞也是彈幕愛刷的,學(xué)會了嗎
知識區(qū)-羅翔




。同時我們可以發(fā)現(xiàn)在華農(nóng)兄弟彈幕區(qū)愛刷的死因來到羅老師這里成了死法,只不過一個是竹鼠的一百種死因一個是張三的一千種死法



生活區(qū)-手工耿


美食區(qū)-我是郭杰瑞



鬼畜區(qū)


技術(shù)解析
requests請求數(shù)據(jù),我們已華農(nóng)兄弟的視頻為例,首先打開需要采集彈幕的視頻,然后F12—>Network,


RequestURL關(guān)鍵就是oid和date兩個參數(shù),date是日期沒什么好說的,oid雖然不知道是什么,但是一堆數(shù)據(jù)包中很多都是帶有一個oid
def?get_url(oid,start,end):
????'''
????獲取指定日期的彈幕
??? oid:視頻oid
??? start,end:起止日期
????'''
????url_list?=?[]
????
????date_list?=?[i?for?i?in?pd.date_range(start,end).strftime('%Y-%m-%d')]
????
????for?date?in?date_list:
????????
????????url?=?f"https://api.bilibili.com/x/v2/dm/history?type=1&oid={oid}&date={date}"
????????url_list.append(url)
????????
????return?url_list
pandas中的date_range函數(shù),非常好用,感興趣的讀者可以自行搜索了解,現(xiàn)在我們獲得了指定日期的彈幕數(shù)據(jù)URL,接下來要做的就是使用requests請求網(wǎng)站并使用bs4解析數(shù)據(jù),最后將數(shù)據(jù)寫入TXT即可def?get_danmu(url_list,name):
????'''
????下載彈幕存至本地txt
????'''
????headers?=?{"cookie":?"修改為你的cookie",
????"origin":?"https://www.bilibili.com",
????"referer":?"https://www.bilibili.com/video/BV1gW411b735",
????"sec-fetch-dest":?"empty",
????"sec-fetch-mode":?"cors",
????"sec-fetch-site":?"same-site",
????"user-agent":?"Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_15_2)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/84.0.4147.105?Safari/537.36"}
????
????file?=?open(f"{name}.txt",'w')
????
????for?i?in?trange(len(url_list)):
????????url?=?url_list[i]
????????res?=?requests.get(url,headers?=?headers)
????????res.encoding?=?'utf-8'
????????soup?=?BeautifulSoup(res.text)
????????data?=?soup.find_all("d")
????????danmu?=?[data[i].text?for?i?in?range(len(data))]
????????for?items?in?danmu:
????????????file.write(items)
????????????file.write("\n")
????????time.sleep(2)
???????
????file.close()
cookie等參數(shù)構(gòu)造請求頭循環(huán)請求數(shù)據(jù)即可,唯一要注意的就是返回的結(jié)果編碼為ISO-8859-1,需要先使用res.encoding?=?'utf-8'修改編碼,否則就會亂碼,當(dāng)然我這里還是用了tqdm來添加進度條
關(guān)注「Python 知識大全」,做全棧開發(fā)工程師 歲月有你 惜惜相處 回復(fù)【資料】獲取高質(zhì)量學(xué)習(xí)資料 【在看】和【贊】我都需要
評論
圖片
表情
