B站視頻之CC字幕抓取

出于某些不可告人的特殊原因偿乖,我需要得到某個B站視頻的 「 字幕 」,自己手動記錄字幕實在過于繁瑣芜壁,每幾秒都會有字幕不斷地更新齐帚,一個1小時的視頻字幕的收集便是一個浩大的工程~

因此我再次召喚我的好幫手 網(wǎng)絡爬蟲 ,來幫我采集字幕并且以 srt 文件的格式保存吐绵。這個 srt 的全稱是SubRip Text迹淌,這是一種非常流行的文本字幕,包含一行時間己单,一行字幕唉窃,制作規(guī)范非常簡單。

file

如上圖所示纹笼,這個字幕是CC字幕纹份,CC是Closed Caption的簡稱,所謂CC字幕,就是隱藏式字幕蔓涧。

CC 是把文字加入NTSC電視信號的一種標準化編碼方法件已。
電視機的內(nèi)置解碼器或獨立解碼器能顯示文字。

Caption 和我們常見的一般字幕(subtitle)的用法是有區(qū)別的元暴,它是在無音狀態(tài)下通過進行一些解釋性的語言來描述當前畫面中所發(fā)生的事情的字幕篷扩,例如畫面中出現(xiàn)了背景的聲音的時候,Caption都會通過字幕進行提示茉盏。

這個CC字幕我們可以再視頻中拖放至任意位置鉴未,十分便捷,經(jīng)過觀察發(fā)現(xiàn)鸠姨,該字幕顯式地放在一個json之中铜秆,而這個json又可以通過Network找到。

file

上圖中的 subtitle_url 便給出了字幕json的鏈接讶迁,而訪問該鏈接可以得到該視頻的所有字幕信息连茧。其中對我生成srt文件最為重要的數(shù)據(jù)便是 from、to以及content巍糯,這些單詞對應的數(shù)據(jù)分別代表某一條字幕的出現(xiàn)時間梅屉,消失時間以及字幕的內(nèi)容。

file

由此我們找到了所需的詳細字幕信息所在的位置鳞贷,思路也非常清晰坯汤,先模擬訪問該視頻頁面獲取字幕的json鏈接,再將json鏈接中包含的信息按照srt文件的格式下載到本地搀愧。

    def get_subtitles(self):
        """
        根據(jù)字幕的json 獲取CC字幕

        """        
        json_url=self.get_json_url()
        if len(json_url)>0:
            with open('{}.srt'.format(self.title),'w',encoding='utf-8') as f:
                r=requests.get(json_url)
                info=json.loads(r.text)['body']
                for i in range(len(info)):
                    subtitle_from=info[i]['from']
                    subtitle_to=info[i]['to']
                    content=info[i]['content']
                    data=self.format_subtitle(subtitle_from,subtitle_to,content,i)
                    f.write(data)

上面的函數(shù)是獲取CC字幕的主要代碼惰聂,下面這段代碼主要是將CC字幕格式化輸出,以標準的srt文件的形式輸出咱筛。

    def format_subtitle(self,subtitle_from,subtitle_to,content,i):        
        """
        格式化成srt文件搓幌,形如:

        1
        00:00:01,035 --> 00:00:04,525
        遠離了平行線 看吧天氣預報也不怎么準

        """
        subtitle_from=round(subtitle_from,3)                                              #四舍五入為三位小數(shù)
        subtitle_to=round(subtitle_to,3)
        begin=time.strftime("%H:%M:%S",time.gmtime(subtitle_from))+','+self.rectify(subtitle_from)        
        end=time.strftime("%H:%M:%S",time.gmtime(subtitle_to))+','+self.rectify(subtitle_to)
        data=str(i+1)+'\n'+begin+' --> '+end+'\n'+content+'\n\n'                          #格式化成srt字幕
        return data

這樣我們就可以得到某個視頻的CC字幕,如果想要爬取的視頻的字幕不是CC字幕的話迅箩,是無法通過上述代碼爬取的溉愁。因為其 list 列表為空,即不存在相關的json饲趋。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末拐揭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奕塑,更是在濱河造成了極大的恐慌堂污,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件龄砰,死亡現(xiàn)場離奇詭異盟猖,居然都是意外死亡讨衣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門式镐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來反镇,“玉大人,你說我怎么就攤上這事娘汞〈醪瑁” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵价说,是天一觀的道長辆亏。 經(jīng)常有香客問我风秤,道長鳖目,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任缤弦,我火速辦了婚禮领迈,結果婚禮上,老公的妹妹穿的比我還像新娘碍沐。我一直安慰自己狸捅,他們只是感情好,可當我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布累提。 她就那樣靜靜地躺著尘喝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斋陪。 梳的紋絲不亂的頭發(fā)上朽褪,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音无虚,去河邊找鬼缔赠。 笑死,一個胖子當著我的面吹牛友题,可吹牛的內(nèi)容都是我干的嗤堰。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼度宦,長吁一口氣:“原來是場噩夢啊……” “哼踢匣!你這毒婦竟也來了?” 一聲冷哼從身側響起戈抄,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤符糊,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后呛凶,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體男娄,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了模闲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片建瘫。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖尸折,靈堂內(nèi)的尸體忽然破棺而出啰脚,到底是詐尸還是另有隱情,我是刑警寧澤实夹,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布橄浓,位于F島的核電站,受9級特大地震影響亮航,放射性物質發(fā)生泄漏荸实。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一缴淋、第九天 我趴在偏房一處隱蔽的房頂上張望准给。 院中可真熱鬧,春花似錦重抖、人聲如沸露氮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽畔规。三九已至,卻和暖如春恨统,著一層夾襖步出監(jiān)牢的瞬間叁扫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工延欠, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留陌兑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓由捎,卻偏偏與公主長得像兔综,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子狞玛,可洞房花燭夜當晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容