免费xxxx大片国产片_精品在线一区_亚洲午夜福利av_亚洲色大成人一区二区_无码熟妇人妻AV在线影片免费

您的位置:首頁 >聚焦 > 熱聞 >

焦點關(guān)注:源代碼和工具 | 2023 bilibili 視頻評論爬蟲,單條視頻最多可爬取 10000 條評論

2023-06-23 04:18:34 來源:程序員客棧

歡迎關(guān)注公眾號「月小水長」,唯一筆者是BuyiXiao,又名小布衣、肖不已。

BuyiXiao,何許人也?本衡州一鄉(xiāng)野村夫,身高八尺不足,年方二十有余;弱冠之年曾求學于潭州,為謀生計,背井離鄉(xiāng),遠赴京畿,我本南人,不習北土,兼有故友,威逼利誘,急于星火,遂下嶺南,打工未半,中道創(chuàng)業(yè),所為何業(yè)?賽博朋克,智能硬件;假工程師之名,行農(nóng)民工之實,滿腹經(jīng)綸,無用書生,善于自黑,貽笑大方。

筆者水平有限,可能暫時無法將非常干貨的教程講的不拖泥帶水又不嘩眾取寵,公眾號文章諸多遺漏或不妥之處,可以加月小水長微信「2391527690」備注「學校專業(yè)/研究方向/工作崗位」進行交流。


(資料圖片)

另外,文末點下「贊」和「在看」,這樣每次新文章推送,就會第一時間出現(xiàn)在你的訂閱號列表里。

我?guī)鸵恍]玩過 b 站的朋友問了 ChatGPT,b 站是什么,它是這么回答我的。

Bilibili 是一家中國的視頻分享平臺,也被稱為“嗶哩嗶哩”或“B站”,其社區(qū)調(diào)性可以用年輕、有趣、創(chuàng)新、多元等詞語來描述。Bilibili的用戶主要是年輕人,其中以學生和年輕白領(lǐng)居多,他們傾向于追求個性化、獨特的內(nèi)容,同時對新鮮事物和潮流保持敏感。

在 Bilibili 上,用戶可以創(chuàng)建自己的賬號并上傳、觀看、評論各種類型的視頻,包括動畫、游戲、音樂、舞蹈、電影等等。Bilibili注重用戶互動,鼓勵用戶之間進行交流和分享,因此 Bilibili 社區(qū)中的用戶活躍度較高。

正因為 b 站用戶群體巨大,公眾號后臺也有不少讀者留言需要 b 站爬蟲的,今天正是分享的是 b 站評論爬蟲,可以一鍵導(dǎo)出指定 b 站視頻的評論。

以前分享過 b 站評論的工具(開箱即用的 B 站評論抓取工具),到第今年三個年頭已經(jīng)失效,有一些 bug 需要修復(fù)今天也算是這篇分享的延續(xù),同時文末附上源代碼和 exe 工具鏈接,不想看細節(jié)的可以直接拉到文末。

測試了下這份代碼/工具大概單個視頻最多能爬到 10000 條以上的評論。

b 站沒啥反爬的,帶個 User-Agent 就能請求數(shù)據(jù)。

headers={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3970.5Safari/537.36","Referer":"https://www.bilibili.com/"}

請求評論數(shù)據(jù)主要注意下 F12 尋找評論的 url 地址即可。

數(shù)據(jù)保存時記得把時間戳轉(zhuǎn)成時間字符串,

defintToStrTime(a):b=time.localtime(a)#轉(zhuǎn)為日期字符串c=time.strftime("%Y/%m/%d%H:%M:%S",b)#格式化字符串returnc

如果以{標題}.csv 命名字符串,記得先把標題處理下以符合文件命名的規(guī)則。

defvalidateTitle(title):re_str=r"[\/\\\:\*\?\"\<\>\|]"#"/\:*?"<>|"new_title=re.sub(re_str,"_",title)#替換為下劃線returnnew_title

用個 for 循環(huán)遍歷要爬取的視頻的 bv 號,實現(xiàn)一次爬取多個視頻的評論的功能。

最后構(gòu)造 dataframe,邊爬取邊保存。

需要注意的是,該爬蟲沒有抓取全部二級評論(回復(fù),樓中樓),只是回復(fù)的前 3 條,如需爬取所有的自行展開回復(fù),擴展該爬蟲代碼即可。

以 b 站下面這個熱門視頻為例,

標題:不開除張某保研資格,就是寒了天下人的心!

鏈接:https://www.bilibili.com/video/BV1Zo4y1N7f1

BV 號:BV1Zo4y1N7f1

抓取的結(jié)果字段包括評論時間、評論用戶名、評論內(nèi)容和評論點贊數(shù)四個字段,如下圖所示。

關(guān)于這個 CSV 結(jié)果文件的獲取可以查看今天的另外一篇推送。

源代碼已經(jīng)打包成 exe,不需要 Python 環(huán)境,雙擊即可運行,需要的讀者公眾號后臺回復(fù)【2023 b站評論提取工具】即可獲取下載鏈接。

最后附上源代碼,歡迎點贊、轉(zhuǎn)發(fā)、留言,支持原創(chuàng)更好的創(chuàng)作。

#-*-coding:utf-8-*-#作者:inspurer(月小水長)#創(chuàng)建時間:2020/10/3023:48#運行環(huán)境Python3.6+#githubhttps://github.com/inspurer#qq郵箱2391527690@qq.com#微信公眾號月小水長(ID:inspurer)#文件備注信息回復(fù)沒有展開importrequestsimportosfromtimeimportsleepimportjsonimporttimeimportpandasaspdimportredefintToStrTime(a):b=time.localtime(a)#轉(zhuǎn)為日期字符串c=time.strftime("%Y/%m/%d%H:%M:%S",b)#格式化字符串returncheaders={"User-Agent":"Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/80.0.3970.5Safari/537.36","Referer":"https://www.bilibili.com/"}defvalidateTitle(title):re_str=r"[\/\\\:\*\?\"\<\>\|]"#"/\:*?"<>|"new_title=re.sub(re_str,"_",title)#替換為下劃線returnnew_titledefmain():save_folder="Comment"ifnotos.path.exists(save_folder):os.mkdir(save_folder)bvs=["BV1Zo4y1N7f1"]forbvinbvs:print(bv)response=requests.get(url="https://www.bilibili.com/video/{}".format(bv),headers=headers)res=re.findall("<script>window.__INITIAL_STATE__=(.*)?;\(function\(\)",response.text,re.S)json_data=json.loads(res[0])if"message"injson_data["error"]:print(json_data["error"]["message"])continueaid=json_data["aid"]title=json_data["videoData"]["title"]title=validateTitle(title)video_info_url="https://api.bilibili.com/x/web-interface/archive/stat?aid={}".format(aid)res_json=requests.get(url=video_info_url,headers=headers).json()like_count,coin_count,collection_count=res_json["data"]["like"],res_json["data"]["coin"],res_json["data"]["favorite"]#print(aid,title,like_count,coin_count,collection_count)comment_url="https://api.bilibili.com/x/v2/reply?callback=jQueryjsonp=jsonp&pn={}&type=1&oid={}&sort=2&_=1594459235799"response=requests.get(url=comment_url.format(1,aid),headers=headers)total_page=json.loads(response.text)["data"]["page"]["count"]//20+1page=1is_root,uname,comments,times,likes=[],[],[],[],[]whileTrue:data=json.loads(response.text)["data"]["replies"]print(data)ifnotdata:data=json.loads(response.text)["data"]if"hots"indata.keys():data=data["hots"]else:breakforrowindata:print("根評論",row["member"]["uname"],row["content"]["message"])is_root.append("是")times.append(intToStrTime(row["ctime"]))uname.append(row["member"]["uname"])comments.append(row["content"]["message"])likes.append(row["like"])ifrow.get("replies"):forcrowinrow["replies"]:is_root.append("否")times.append(intToStrTime(crow["ctime"]))uname.append(crow["member"]["uname"])comments.append(crow["content"]["message"])likes.append(crow["like"])print("---子評論",crow["member"]["uname"],crow["content"]["message"])page+=1ifpage>total_page:breaksleep(1)response=requests.get(url=comment_url.format(page,aid),headers=headers)#邊爬取邊保存df=pd.DataFrame({"評論時間":times,"評論者":uname,"評論內(nèi)容":["".join(comment.split())forcommentincomments],"點贊數(shù)":likes})df.to_csv(f"{save_folder}/{title}.csv",encoding="utf-8-sig",index=False)print(f"\n\n已經(jīng)保存{df.shape[0]}條評論到{save_folder}/{title}.csv\n\n")sleep(1)#每抓完1條視頻的評論休眠10ssleep(10)if__name__=="__main__":main()

往期精選

自研小紅書評論區(qū)自動回復(fù)軟件,于繁雜的客服流水作業(yè)中抽身2023 微博評論爬蟲 | 突破 1000 頁限制,抓取 10w 條微博評論CBDB | 可視化歷史名人的關(guān)系和足跡小紅書帖子和評論自助提取工具