一個簡單的爬取b站up下所有視頻的所有評論信息的爬蟲


心血來潮搞了一個簡單的爬蟲,主要是想知道某個人的b站賬號,但是你知道,b站在搜索一個用戶時,如果這個用戶沒有投過稿,是搜不到的,,,這時就只能想方法搞到對方的mid,,就是 space.bilibili.com/9444976 后面的那一串數字。偶然看到這個人關注了某個主播,,想到可能這個人會回復主播的視頻,於是想着爬到所有up下的視頻的評論對應的用戶,這樣我就可以在數據庫里檢索昵稱得到mid,,,嘿嘿嘿(然而失敗了,,不是所有人都像我這么無聊,,,,有些人真的看視頻不會回復,,

項目地址: https://github.com/31415926535x/CollegeProjectBackup/tree/master/BilibiliSpiders

這個爬蟲的主要功能是爬取某個指定up主下的所有視頻中的評論(不包括評論的回復,當然可以實現,但是感覺都差不多,就沒考慮這塊),最后將爬到的用戶數據存到數據庫里。整個項目只是抱着學習相關內容的心態來完成,不要做大批量的爬取網站(DDOS)及其敏感數據的事,也不要用作商業用途,,(雖然寫的很丑,,,)

簡要說明

整個項目的分為三個部分,首先是爬取指定mid up的所有視頻的av號,即 CrawlAllVideosOfAUP.py 這個腳本,使用的api是 https://api.bilibili.com/x/space/arc/search?mid=mid&ps=30&tid=0&pn=pn&keyword=&order=pubdate&jsonp=jsonp 具體的說明見腳本內注釋。

之后有了所有的av號,使用 CrawlCommentUsersByVideo.py 爬取指定av號下的所有評論,使用的api是 https://api.bilibili.com/x/v2/reply?pn=**&type=1&oid=***&sort=2 爬取av號為 oid 下第 pn 頁的評論的信息(sort對應的應該是評論的展示順序用不到沒管。可以爬取到很多的信息,根據自己需求來修改腳本計科。

最后將這兩個整合,加一點點細節就行了,,大致是一個能用的腳本(雖然最后沒有找到我想要的一個信息,,,,

具體看注釋吧,,很簡單的一些東西吧,,長見識為主,留印象。。。。

總結

之前很早就接觸了Python爬蟲,,但是只是用一下就扔了,沒有自己完全的編寫一個,,所以心血來擦寫一個練練手,,說不定以后還會遇到這樣類似的事,,,

這個腳本最后將爬取到的數據扔到了數據庫里,,因為之前看別人的代碼,他是獲取一條寫入一條,,數據量一大就很慢,,(尤其是用了線程一邊獲取一遍寫入時,因為爬蟲一次會獲得很多的數據,但是如果保存數據庫時一條一條的 commit 些磁盤的io瓶頸就會顯露出來,,所以可以加一個 flag ,寫入到1000或者某個值時再 commit 這樣就很有效率了,,跑偏了)

大概了解了一下python下的線程的寫法,思路都是那個思路,,算是簡單的見識一下,,,

關於windows下的mysql數據庫:我們通常會備份一個數據庫的某些表的結構到一個文件中,例如 233.sql ,使用的命令可能是 mysqldump -uroot -p databases > 233.sql 等等類似的,,但是這個命令在windows的 PowerShell 會有bug,,具體原因沒有深究(猜測是編碼的鍋),導出的文件不能使用 source 233.sql 導入,,會爆什么 '\0' 等 ASCII錯誤,,這時的解決方法就是換 cmd ,,這個錯誤第一次見,,而且不好解決,,迷惑性太大,,容易帶偏QAQ,,,太浪費時間了,,,

好像沒啥了。。。(end)

哦對,加個參考。。。

這是一個暴力爬所有用戶信息的,思路差不多的

這個也是,簡單些的

user-agents看到一個很全的ua,因為我的數據量不大,所以就沒用,記錄一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM