論采集終極指南:用BilibiliCommentScraper一鍵拿到完整評(píng)論數(shù)據(jù))
B站評(píng)論采集終極指南用BilibiliCommentScraper一鍵拿到完整評(píng)論數(shù)據(jù)【免費(fèi)下載鏈接】BilibiliCommentScraperB站視頻評(píng)論爬蟲(chóng) Bilibili完整爬取評(píng)論數(shù)據(jù)包括一級(jí)評(píng)論、二級(jí)評(píng)論、昵稱、用戶ID、發(fā)布時(shí)間、點(diǎn)贊數(shù)項(xiàng)目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper凌晨一點(diǎn)運(yùn)營(yíng)崗的小王對(duì)著滿屏數(shù)據(jù)發(fā)呆。老板丟給他一個(gè)任務(wù)分析競(jìng)品視頻的評(píng)論區(qū)搞清楚用戶到底在抱怨什么。他打開(kāi)視頻一看——評(píng)論區(qū) 8000 多條手動(dòng)復(fù)制到天亮也復(fù)制不完。好不容易找到一個(gè)號(hào)稱免費(fèi)爬蟲(chóng)的小工具裝上跑了一小時(shí)只拿到前 30 條二級(jí)評(píng)論全是空的評(píng)論區(qū)里用戶互相回復(fù)的對(duì)話關(guān)系徹底丟失。這種看得見(jiàn)、拿不到的憋屈感凡是做過(guò) B 站數(shù)據(jù)采集的人都懂。今天要介紹的BilibiliCommentScraper就是專門解決這個(gè)問(wèn)題的開(kāi)源工具它能模擬真人瀏覽網(wǎng)頁(yè)把 B 站視頻的一級(jí)評(píng)論、二級(jí)評(píng)論、昵稱、用戶ID、發(fā)布時(shí)間、點(diǎn)贊數(shù)全部完整抓下來(lái)還支持批量處理與斷點(diǎn)續(xù)爬。這篇文章不堆術(shù)語(yǔ)我用大白話帶你從零跑通第一個(gè)采集任務(wù)。30秒看懂這個(gè)工具能干什么先給結(jié)論再展開(kāi)。下面是 BilibiliCommentScraper 的核心能力速覽讀完這張表你就知道它值不值得繼續(xù)看下去核心能力具體表現(xiàn)你能得到什么批量采集 ?一個(gè)video_list.txt文件放多個(gè)視頻鏈接每個(gè)視頻自動(dòng)生成一個(gè)獨(dú)立的 CSV 文件層級(jí)完整 一級(jí)評(píng)論 二級(jí)評(píng)論全部抓取評(píng)論的誰(shuí)回復(fù)誰(shuí)關(guān)系不丟失字段豐富 9 個(gè)字段昵稱、用戶ID、內(nèi)容、時(shí)間、點(diǎn)贊數(shù)等拿到的數(shù)據(jù)可直接做分析斷點(diǎn)續(xù)爬 ?進(jìn)度自動(dòng)寫(xiě)入progress.txt程序中斷后接著跑不從頭再來(lái)自動(dòng)重試 ?網(wǎng)頁(yè)崩潰、網(wǎng)絡(luò)波動(dòng)會(huì)自動(dòng)重啟瀏覽器可以放心掛機(jī)跑一整晚一句話總結(jié)你負(fù)責(zé)把視頻鏈接填進(jìn)去剩下的事它自己干。跑完回來(lái)每個(gè)視頻的完整評(píng)論已經(jīng)靜靜躺在 CSV 文件里了。上圖就是工具產(chǎn)出的真實(shí)數(shù)據(jù)每一行是一條評(píng)論隸屬關(guān)系列清楚標(biāo)出它是一級(jí)評(píng)論還是二級(jí)評(píng)論如果是一條二級(jí)評(píng)論被評(píng)論者昵稱和被評(píng)論者ID會(huì)記錄它回復(fù)的是誰(shuí)。這種層級(jí)結(jié)構(gòu)正是很多簡(jiǎn)單爬蟲(chóng)給不了你的。幕后原理它憑什么能做到完整很多朋友一聽(tīng)到爬蟲(chóng)就頭皮發(fā)麻其實(shí) BilibiliCommentScraper 的原理一點(diǎn)也不玄乎我用三個(gè)生活化的比喻講清楚。① 它像一位看得見(jiàn)的搬運(yùn)工而不是隔空取物的黑客工具底層用的是 Selenium——一個(gè)能驅(qū)動(dòng)真實(shí) Chrome 瀏覽器的庫(kù)。它會(huì)真的打開(kāi)一個(gè)瀏覽器窗口像人一樣滾動(dòng)頁(yè)面、點(diǎn)擊查看全部回復(fù)按鈕、翻二級(jí)評(píng)論的頁(yè)碼。B 站網(wǎng)頁(yè)加載多少它就能看到多少所以能拿到的數(shù)據(jù)遠(yuǎn)比 API 接口給的多。這也是它能抓到二級(jí)評(píng)論的根本原因它走的不是后門而是正門只是手速比人快得多。② 它像快遞分揀員把每件包裹放進(jìn)對(duì)應(yīng)格子瀏覽器加載出頁(yè)面后工具會(huì)用 BeautifulSoup 把網(wǎng)頁(yè)代碼拆開(kāi)按照 B 站固定的頁(yè)面結(jié)構(gòu)把每條評(píng)論的昵稱、ID、內(nèi)容、時(shí)間、點(diǎn)贊數(shù)分揀進(jìn)對(duì)應(yīng)字段再一行行寫(xiě)進(jìn) CSV。整個(gè)過(guò)程就像分揀員看包裹上的地址標(biāo)簽往對(duì)應(yīng)的格子里一放簡(jiǎn)單直接。③ 它隨身帶著記賬本和通行證記賬本就是progress.txt每爬完一條評(píng)論就記一筆賬比如已經(jīng)爬完第 2 個(gè)視頻的第 15 條一級(jí)評(píng)論。程序中斷了沒(méi)關(guān)系下次運(yùn)行先翻記賬本從上次停下的地方繼續(xù)。通行證就是cookies.pkl第一次運(yùn)行時(shí)讓你掃碼登錄一次之后它把登錄憑證存成文件下次自動(dòng)帶上不用反復(fù)登錄。明白了這三點(diǎn)你就知道它完整、能續(xù)、不怕斷的底氣從哪來(lái)了。接下來(lái)我們動(dòng)手跑一遍。分步實(shí)操?gòu)陌惭b到拿到第一份評(píng)論數(shù)據(jù)整個(gè)過(guò)程大概 10 分鐘跟著做就行。每一步我都標(biāo)了成功標(biāo)志方便你確認(rèn)自己走對(duì)了。第 1 步準(zhǔn)備環(huán)境你需要兩樣?xùn)|西Python 3.8 或更高版本以及一個(gè)最新版 Chrome 瀏覽器。沒(méi)有 Python 的話去官網(wǎng)下載安裝包時(shí)記得勾選Add Python to PATH。第 2 步獲取工具并安裝依賴打開(kāi)命令行依次執(zhí)行g(shù)it clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper cd BilibiliCommentScraper pip install selenium beautifulsoup4 webdriver-manager?成功標(biāo)志看到Successfully installed ...一類的提示且當(dāng)前文件夾里能看到Bilicomment.py這個(gè)文件。別擔(dān)心 webdriver-manager 是什么它是幫你自動(dòng)匹配 Chrome 瀏覽器驅(qū)動(dòng)的小助手裝好后你完全不用手動(dòng)下載任何東西。第 3 步填寫(xiě)視頻列表用記事本打開(kāi)video_list.txt每行放一個(gè) B 站視頻鏈接想爬幾個(gè)就放幾個(gè)https://www.bilibili.com/video/BV17M41117eg https://www.bilibili.com/video/BV1QF411q73H https://www.bilibili.com/video/BV1c14y147g6?成功標(biāo)志文件保存后每行一個(gè)鏈接沒(méi)有空行和多余字符。這一步很關(guān)鍵鏈接格式錯(cuò)了對(duì)應(yīng)視頻會(huì)被跳過(guò)并記進(jìn)video_errorlist.txt。第 4 步運(yùn)行并完成登錄python Bilicomment.py程序會(huì)先彈出一個(gè)瀏覽器窗口控制臺(tái)提示請(qǐng)登錄登錄成功跳轉(zhuǎn)后按回車鍵繼續(xù)…。這時(shí)你掃碼登錄自己的 B 站賬號(hào)登錄一次即可之后自動(dòng)復(fù)用跳轉(zhuǎn)成功后再回到命令行按回車。?成功標(biāo)志控制臺(tái)開(kāi)始滾動(dòng)打印下滑滾動(dòng)第 N 次、每寫(xiě)完一條評(píng)論的進(jìn)度提示??吹竭@些說(shuō)明它已經(jīng)開(kāi)爬了你可以去泡杯茶。第 5 步查看結(jié)果每個(gè)視頻跑完后代碼同級(jí)目錄下會(huì)出現(xiàn)一個(gè)以視頻ID命名的 CSV 文件例如BV17M41117eg.csv。用記事本或 VS Code 打開(kāi)就能看到完整數(shù)據(jù)如果堅(jiān)持用 Excel請(qǐng)用數(shù)據(jù)→從文本/CSV 導(dǎo)入并選擇 UTF-8 編碼避免中文亂碼。?成功標(biāo)志文件里有 9 列數(shù)據(jù)且隸屬關(guān)系列同時(shí)出現(xiàn)一級(jí)評(píng)論和二級(jí)評(píng)論說(shuō)明層級(jí)結(jié)構(gòu)抓全了。進(jìn)階技巧錦囊4 個(gè)讓效率翻倍的小招下面這些技巧按場(chǎng)景→做法→效果展開(kāi)你遇到對(duì)應(yīng)情況時(shí)直接取用即可。技巧 1爬熱門視頻總被 B 站冷處理場(chǎng)景評(píng)論量幾萬(wàn)的大熱視頻跑著跑著控制臺(tái)就長(zhǎng)時(shí)間沒(méi)動(dòng)靜了。做法把代碼里的固定延時(shí)改成隨機(jī)延時(shí)。先在文件頂部加import random再把需要延時(shí)的地方改成time.sleep(random.uniform(1, 5))。效果請(qǐng)求節(jié)奏變得像真人操作一樣不規(guī)律被識(shí)別為機(jī)器人的概率大幅下降。技巧 2某個(gè)視頻爬失敗想直接跳過(guò)它場(chǎng)景第 3 個(gè)視頻一直報(bào)錯(cuò)你想先跳過(guò)它爬后面的。做法打開(kāi)progress.txt把video_count的值加 1保存后重新運(yùn)行。效果程序會(huì)直接跳到下一個(gè)視頻從頭開(kāi)始爬不浪費(fèi)一秒鐘。技巧 3電腦配置一般怕爬崩場(chǎng)景筆記本內(nèi)存只有 8G滾動(dòng)加載太多評(píng)論怕瀏覽器崩潰。做法把代碼里的MAX_SCROLL_COUNT 45調(diào)小到 20 或 30把max_sub_pages 150調(diào)成 50。效果單次加載量變小內(nèi)存占用明顯下降程序更穩(wěn)代價(jià)是單視頻最多抓取的評(píng)論數(shù)相應(yīng)減少適合先跑通流程的場(chǎng)景。技巧 4想快速知道評(píng)論總數(shù)和熱度分布場(chǎng)景數(shù)據(jù)拿到手了想先看一眼整體情況。做法用 pandas 三行代碼搞定import pandas as pd df pd.read_csv(BV17M41117eg.csv, encodingutf-8) print(len(df), df[點(diǎn)贊數(shù)].mean())效果立刻得到總評(píng)論數(shù)和平均點(diǎn)贊數(shù)判斷這個(gè)視頻的互動(dòng)質(zhì)量再?zèng)Q定要不要深入分析。真實(shí)案例拆解從原始 CSV 到一條結(jié)論光說(shuō)功能不夠我們模擬一個(gè)完整場(chǎng)景假設(shè)你是內(nèi)容創(chuàng)作者想看看自己那條結(jié)石科普視頻IDBV17M41117eg的觀眾反饋。跑完工具后CSV 里大概是這樣的編號(hào)隸屬關(guān)系被評(píng)論者昵稱昵稱評(píng)論內(nèi)容發(fā)布時(shí)間點(diǎn)贊數(shù)1一級(jí)評(píng)論up主鄭路過(guò)的2021/9/10 23:20876862二級(jí)評(píng)論鄭用戶A你好我們旅途同歸天堂沒(méi)有病痛2021/9/11 6:3654113二級(jí)評(píng)論鄭用戶B結(jié)石真的疼啊2021/9/11 6:56717拿到這份數(shù)據(jù)你的分析思路可以這樣走import pandas as pd df pd.read_csv(BV17M41117eg.csv, encodingutf-8) # 1. 看結(jié)構(gòu)一級(jí)、二級(jí)評(píng)論各多少 print(df[隸屬關(guān)系].value_counts()) # 2. 看熱度點(diǎn)贊最高的 5 條評(píng)論 print(df.nlargest(5, 點(diǎn)贊數(shù))[[昵稱, 評(píng)論內(nèi)容, 點(diǎn)贊數(shù)]]) # 3. 看時(shí)間規(guī)律 df[發(fā)布時(shí)間] pd.to_datetime(df[發(fā)布時(shí)間]) print(df[發(fā)布時(shí)間].dt.hour.value_counts().sort_index())最后你得出的結(jié)論可能是這樣的觀眾在疼痛感和治療經(jīng)歷兩個(gè)話題上討論最熱烈二級(jí)評(píng)論里大量是病友互相安慰的對(duì)話評(píng)論高峰出現(xiàn)在晚間 20 點(diǎn)到 23 點(diǎn)說(shuō)明下一條視頻可以選在這個(gè)時(shí)段發(fā)布。這份結(jié)論如果靠手動(dòng)復(fù)制評(píng)論至少要大半天而用 BilibiliCommentScraper你只需要在跑數(shù)據(jù)的時(shí)間里去準(zhǔn)備視頻腳本。工具把最枯燥的部分做完了你只需專注思考。避坑與急救箱問(wèn)題速查卡以下是新手最容易遇到的 4 個(gè)問(wèn)題按癥狀—原因—解法整理遇到直接對(duì)號(hào)入座。癥狀原因解法CSV 用 Excel 打開(kāi)全是亂碼Excel 默認(rèn)按系統(tǒng)編碼打開(kāi)而文件是 UTF-8用記事本或 VS Code 打開(kāi)或 Excel 用數(shù)據(jù)→從文本/CSV導(dǎo)入并選 UTF-8報(bào)錯(cuò)Permission deniedCSV 或 progress.txt 被其他程序占用關(guān)閉占用文件的程序包括正開(kāi)著的 Excel必要時(shí)以管理員身份運(yùn)行程序長(zhǎng)時(shí)間無(wú)輸出請(qǐng)求太頻繁被 B 站限流或要輸驗(yàn)證碼直接重啟程序它會(huì)斷點(diǎn)續(xù)爬若頻繁發(fā)生改用隨機(jī)延時(shí)爬到的數(shù)量比頁(yè)面顯示的少B 站評(píng)論數(shù)本身有虛標(biāo)部分評(píng)論被隱藏或刪除手動(dòng)滾動(dòng)到頁(yè)面底部核對(duì)最后幾條評(píng)論是否與 CSV 末尾一致一致即說(shuō)明已完整還有兩個(gè)小提醒一級(jí)評(píng)論的被評(píng)論者昵稱和被評(píng)論者ID會(huì)顯示up主這是程序主動(dòng)寫(xiě)入的標(biāo)記不是爬蟲(chóng)數(shù)據(jù)如果爬取超大熱度的視頻時(shí)頁(yè)面反復(fù)崩潰優(yōu)先把MAX_SCROLL_COUNT調(diào)小。延伸與邊界它擅長(zhǎng)什么不擅長(zhǎng)什么誠(chéng)實(shí)地說(shuō)BilibiliCommentScraper 不是萬(wàn)能的了解它的邊界能幫你少走彎路。它擅長(zhǎng)的事批量抓取多個(gè)視頻的完整評(píng)論尤其是二級(jí)評(píng)論這是很多同類工具做不到的長(zhǎng)時(shí)間掛機(jī)運(yùn)行斷點(diǎn)續(xù)爬 自動(dòng)重試的組合很適合夜里跑、白天看結(jié)果的工作流提供結(jié)構(gòu)化的 CSV 數(shù)據(jù)直接對(duì)接 pandas、Excel 等分析工具它的局限本質(zhì)是模擬瀏覽器比直接調(diào) API 慢評(píng)論量極大的視頻需要較長(zhǎng)等待時(shí)間需要本機(jī)有 Chrome 和 Python 環(huán)境且依賴登錄態(tài)cookies 失效時(shí)需要重新登錄抓取上限受參數(shù)控制默認(rèn)約 920 條一級(jí)評(píng)論二級(jí)評(píng)論默認(rèn)最多 150 頁(yè)這些都可以在代碼里調(diào)整可以拓展的方向拿到 CSV 后你可以進(jìn)一步做情感分析判斷評(píng)論褒貶、詞云可視化提煉高頻詞、或者按時(shí)間戳做發(fā)布時(shí)段優(yōu)化。工具負(fù)責(zé)采集分析的自由度完全在你手里?,F(xiàn)在就可以開(kāi)始的第一步BilibiliCommentScraper 最大的價(jià)值就一句話它把拿全 B 站評(píng)論這件事從手動(dòng)地獄變成了全自動(dòng)流水線你只需要填鏈接、跑一次、拿數(shù)據(jù)?,F(xiàn)在你要做的第一步很簡(jiǎn)單打開(kāi)命令行執(zhí)行g(shù)it clone https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper然后往video_list.txt里放進(jìn)第一個(gè)你想分析的視頻鏈接運(yùn)行python Bilicomment.py。建議先挑一個(gè)評(píng)論量幾百條的小視頻試水跑通全流程后再上熱門視頻——十分鐘后你手里就會(huì)多出一份別人熬夜復(fù)制都拿不到的完整評(píng)論數(shù)據(jù)?!久赓M(fèi)下載鏈接】BilibiliCommentScraperB站視頻評(píng)論爬蟲(chóng) Bilibili完整爬取評(píng)論數(shù)據(jù)包括一級(jí)評(píng)論、二級(jí)評(píng)論、昵稱、用戶ID、發(fā)布時(shí)間、點(diǎn)贊數(shù)項(xiàng)目地址: https://gitcode.com/gh_mirrors/bi/BilibiliCommentScraper創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考