<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          百行代碼輕松爬取視頻

          共 1759字,需瀏覽 4分鐘

           ·

          2020-10-24 08:55

          最近老肥在追劇,遇到了不是VIP無法暢享劇集的小困難。然后我在某強大的搜索引擎中發(fā)現(xiàn)了一個視頻網(wǎng)站,該網(wǎng)站涵蓋了各大熱門視頻,與VIP的更新速度同步,并且無需等待廣告。


          視頻網(wǎng)站?不如我們就寫個小爬蟲把喜歡的電視劇全部下載到本地,方便隨時觀看,話不多說,直接開淦!

          ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ?

          先來看看單集視頻如何爬取,隨著視頻的播放,我們可以看到一條又一條的ts生成,ts是Transport Stream的縮寫,我們可以理解為是視頻流。這些ts文件大概是幾秒鐘的播放時長,因而我們后面需要將該集的所有ts文件合并起來以便觀看。



          單個ts文件非常容易爬取,使用requests請求對應的url,并將返回的content保存為新的ts文件即可。那么如何獲取所有的ts(或者說這些ts的url)呢,答案就在m3u8之中。m3u8文件實質(zhì)上是一個播放列表,其內(nèi)部信息記錄的是一系列的媒體片段資源。



          該視頻的所有ts列表均在該m3u8之中。也就是說我們首先需要獲取該視頻的m3u8文件,根據(jù)文件中的ts列表,我們可以將該視頻所有的ts文件下載到本地。


          將該視頻所有的ts文件下載之后,我們需要將這些文件合并。如果直接使用命令copy進行合并的話,會有文件數(shù)量的限制,本例中就無法將近千個ts文件合并。因此,我使用了ffmpeg來進行合并操作,在代碼中通過os.system執(zhí)行ffmpeg合并命令。

          def merge(piece):    """    合并ts文件    """    os.chdir(vedio_name)    with open('temp.txt', 'w') as f:        for ts_file in glob('*.ts'):????????????f.write('file?'?+?ts_file?+?'\n')    shell_str = 'ffmpeg -f concat -i temp.txt -c copy 第{}集.mp4'.format(piece + 1)    os.system(shell_str)    print("*****************視頻'{}第{}集'合并成功*****************".format(vedio_name, piece+1))


          至此,單集視頻的下載就已經(jīng)完成——不對,這樣下載速度可慢了,如何提速?這里使用了多進程,將所有的ts文件等分進行視頻的多進程下載,為了增加用戶體驗,這里還加入了進度條的顯示,使用tqdm模塊,將各個進程的下載情況以進度條的形式顯示。



          那么如何下載電視劇的所有分集呢,返回到電視劇的主頁面,這里有各個分集選項,通過查看網(wǎng)頁源代碼,我們可以直接使用xpath、正則或者其他方式來提取,加上網(wǎng)頁前綴即可生成分集頁面的完成url。



          通過這些url,我們可以獲取各分集對應的m3u8的url,從而獲取相應的ts的url,并進而經(jīng)過處理獲得完整的視頻。



          除此之外,根據(jù)我的觀察發(fā)現(xiàn)這些視頻的前綴url格式一致,僅有一處不同,且該處是電視劇名稱的拼音,因此用戶只需要輸入想要下載的電視劇的中文名稱,通過pypinyin模塊將其轉化成拼音,即可完成后面這一系列視頻下載操作,完整的代碼我已上傳,在后臺回復「視頻」即可獲取。


          —??—

          回復關鍵字“簡明python ”,立即獲取入門必備書籍簡明python教程》電子版

          回復關鍵字爬蟲”,立即獲取爬蟲學習資料

          python入門與進階
          每天與你一起成長

          推薦閱讀


          點「在看」的人都變好看了哦!
          瀏覽 68
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  一区二区三区视频在线观看 | 青娱乐免费视频在线 | 美女交叉免费视频啪啪 | 最会潮吹的小护士露比来了上篇顶级色影 | 色婷婷基地伊人 |