亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現視頻下載與合成

發布時間:2022-04-16 10:36:26 來源:億速云 閱讀:113 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Python怎么實現視頻下載與合成”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Python怎么實現視頻下載與合成”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    模塊使用

    requests >>> pip install requests (數據請求 第三方模塊)

    re # 正則表達式 去匹配提取數據

    json

    開發環境

    Python 3.8 解釋器

    Pycharm 2021.2 版本 建議

    win + R 輸入cmd 輸入安裝命令 pip install 模塊名 如果出現爆紅 可能是因為 網絡連接超時 切換國內鏡像源

    案例實現

    1.明確需求

    采集內容, 先分析一個視頻是從哪里獲取

    通過開發者工具進行抓包分析, 分析視頻數據可以從哪里獲取內容 格式 m3u8視頻內容

    當我們網站視頻格式 是m3u8的時候, 有一個專門存放所有ts視頻片段的文件

    2.代碼實現步驟

    • 發送請求

    • 獲取數據

    • 解析數據

    • 保存數據

    1. 發送請求, 對于視頻播放頁面url地址發送請求

    2. 獲取數據, 獲取服務器返回response響應數據

    3. 解析數據, 提取我們想要的數據內容 視頻標題 以及 m3u8 鏈接

    4. 發送請求, 對于 m3u8 鏈接 發送請求

    5. 獲取數據, 獲取服務器返回response響應數據

    6. 解析數據, 提取所有ts文件url [視頻片段]

    7. 保存數據, 把所有視頻保存下來, 然后合成為一個整體視頻內容

    實現代碼

    import requests  # 數據請求模塊 pip install requests  在cmd里面 輸入命令
    import re  # 導入正則表達式模塊 內置模塊
    import json
    import pprint  # 格式化輸出模塊
    
    for page in range(1, 17):
        print(f'--------------------正在采集第{page}頁的數據內容--------------------')
        list_url = 'https://www.acfun.cn/u/45321802'
        # 批量 ctrl + R 選中目標
        data = {
            'quickViewId': 'ac-space-video-list',
            'reqID': page + 1,
            'ajaxpipe': '1',
            'type': 'video',
            'order': 'newest',
            'page': page,
            'pageSize': '20',
            't': '1649944573765',
        }
        headers = {
            # 'cookies': '你的cookie',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
        }
        # get請求 有一個params參數
        # post請求 data 參數
        response = requests.get(url=list_url, params=data, headers=headers)
        # print(response.text)
        id_list = re.findall('a href=.*?ac(.*?)"', response.text)
        for index in id_list:
            video_id = index.replace('\\', '')
            """
            1. 發送請求, 對于視頻播放頁面url地址發送請求
                用python代碼去模擬瀏覽器 對于 url地址發送請求
            video 
            """
            url = f'https://www.acfun.cn/v/ac{video_id}'  # 確定請求url地址
            # 請求頭 用偽裝python代碼, 為了被服務器識別出來 是爬蟲程序 一種簡單反反爬手段 當你加ua 得到數據的時候, 可能要cookie
            # 需要登陸才能獲得數據的, 需要加cookie 用戶信息, 常用于檢測是否登陸賬號
            headers = {
                # 'cookies': '你的cookie',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
            }
            # 通過requests模塊里面get請求方式, 對于url地址發送請求, 并且攜帶上headers請求頭偽裝, 最后用response自定義變量接收返回數據
            response = requests.get(url=url, headers=headers)
            # 2. 獲取數據
            # print(response.text)
            # 3. 解析數據 通過re模塊里面findall的方法 在response.text里面去找尋 標題數據 re.S 匹配換行
            # 正則表達式提取出來的數據返回都是列表數據類型  實現過程不重要, 方式方法很多, 你喜歡用哪個都可以 只要可以取到數據都OK
            title = re.findall('<title >(.*?) - AcFun彈幕視頻網 - 認真你就輸啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ</title>', response.text)[0]
            video_info = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
    
            # print(video_info) # 字符串轉成字典 怎么轉  最穩妥查看數據類型 直接用 type() 這個函數去查看
            json_data = json.loads(video_info)
            # pprint.pprint(json_data)
            # 字典取值 根據冒號左邊的內容(鍵) 提取冒號右邊的內容(值)
            m3u8_url = \
            json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
            # print(title)
            # print(m3u8_url)
            # 通過requests模塊里面get請求方式, 對于m3u8_url地址發送請求, 并且攜帶上headers請求頭偽裝, 獲取響應體文本數據, 用m3u8_data自定義變量接收數據
            m3u8_data = requests.get(url=m3u8_url, headers=headers).text
            # split() 字符串分割
            m3u8_data = re.sub('#E.*', '', m3u8_data).split()
            # print(m3u8_data)
            for ts in m3u8_data:
                ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts
                ts_content = requests.get(url=ts_url, headers=headers).content
                # ab 是什么意思 a追加保存, b 二進制數據 ab 以二進制數據追加保存
                with open('video\\' + title + '.mp4', mode='ab') as f:
                    f.write(ts_content)
            print('視頻保存完成: ', title)

    讀到這里,這篇“Python怎么實現視頻下載與合成”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    高清| 望都县| 吉林市| 浮梁县| 延安市| 苍溪县| 谷城县| 磐石市| 乌恰县| 仪征市| 保亭| 临猗县| 宜州市| 洮南市| 安新县| 南宁市| 密云县| 抚州市| 北流市| 南涧| 栾城县| 阿克陶县| 平遥县| 喀喇沁旗| 张家口市| 南昌市| 福清市| 平山县| 通渭县| 建水县| 铜陵市| 元氏县| 会宁县| 钟山县| 抚宁县| 万山特区| 邹城市| 镇安县| 凤台县| 九寨沟县| 克什克腾旗|