1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        用Python搞定抖X無水印短視頻下載

        共 5473字,需瀏覽 11分鐘

         ·

        2022-01-19 10:59

        作者?| 道才
        來源 |?可以叫我才哥

        有時候刷抖音,遇到喜歡的視頻保存在本地,然后都是帶有水印的,作為有一點“潔癖”的小編,不太喜歡。索性就自己用Python制作了這個簡單的小工具,用于下載抖音無水印短視頻!


        目錄:

        1. 需求分析

        2. 尋金定穴

        3. 下載視頻

        4. 制作GUI

        5. 打包


        1. 需求分析


        這里我們是通過PC端www.douyin.com里查看需要下載的視頻,然后解析出其下載地址后進行下載。

        先找到 目標(biāo)視頻 的詳情頁, 比如我們刷到下面這個視頻,點擊右下角的詳情即可進入到目標(biāo)視頻的詳情頁。

        以下就是詳情頁,可以看到url最后一個應(yīng)該是視頻id

        這也將是本文案例的視頻詳情url地址

        https://www.douyin.com/video/7049314157723766024

        再確定了目標(biāo)視頻詳情頁之后,我們就要找到視頻真身所在,確定真身后就可以直接下載了。

        最終我們小工具的形態(tài)就是只需要填寫視頻詳情url地址即可一鍵下載~

        需要引入的第三方庫

        import?requests
        import?time????????
        import?re
        import?json
        from?selenium?import?webdriver
        from?webdriver_manager.chrome?import?ChromeDriverManager
        from?urllib.parse?import?unquote
        import?PySimpleGUI?as?sg

        沒有安裝這些庫的話,直接pip install 搞起!


        2. 尋金定穴


        老規(guī)矩,F12找起來!

        這里F12—>網(wǎng)絡(luò)—>媒體,然后刷新頁面就找到了。。。

        但是這玩意又臭又長,感覺完全看出不規(guī)律,咋辦!

        那就去網(wǎng)頁元素里找找吧!復(fù)制請求網(wǎng)址中部分片段,然后去元素里ctrl+F找起來!居然真的找到了??!

        file_url?=?'https://v3-weba.douyinvod.com/44563c92986b4b7a953475e5fc4c00fb/61e40f39/video/tos/cn/tos-cn-ve-15-alinc2/a3b5603e05d3474faeb1b115263edf4a/?a=6383&br=1138&bt=1138&cd=0%7C0%7C0&ch=26&cr=0&cs=0&cv=1&dr=0&ds=3&er=&ft=l9~jcXpzzKhWH6B1UDmiLo&l=021642332439844fdbddc0200fff0050a90bd4d0000011daf0d4b&lr=all&mime_type=video_mp4&net=0&pl=0&qs=0&rc=ajZ3cDk6Zm02OjMzNGkzM0ApaWdoZmhlaTtkNzQ6aDtoNGcyLTY0cjRvMF5gLS1kLS9zc2A2MzEyXzZgMl81YF41Yi86Yw%3D%3D&vl=&vr='

        接著我們用requests請求一下視頻詳情頁,需要注意這里需要帶cookie信息,否則請求的數(shù)據(jù)有問題!

        關(guān)于cookie,這里提供兩種方案供選擇

        • 自己復(fù)制網(wǎng)頁里的cookie信息即可(最方便)
        • 通過selenium模擬瀏覽douyin,然后獲取cookie存本地待調(diào)用

        本來想用無頭瀏覽器形式,結(jié)果發(fā)現(xiàn)獲取不到cookie,另外就是可能selenium打開抖音的時候需要滑塊驗證一下否則也獲取不到cookie。

        #?獲取cookie
        def?get_cookies():
        ????#?初始化瀏覽器為chrome瀏覽器
        ????#?無界面的瀏覽器
        ????#?option?=?webdriver.ChromeOptions()
        ????#?option.add_argument("headless")
        ????#?browser?=?webdriver.Chrome(ChromeDriverManager().install(),options=option)???
        ????browser?=?webdriver.Chrome(ChromeDriverManager().install())
        ????browser.set_window_size(100,100)??
        ????browser.get(r'https://www.douyin.com')
        ????cookie_list?=?browser.get_cookies()
        ????
        ????#?關(guān)閉瀏覽器
        ????browser.close()
        ????
        ????return?cookie_list

        不過,在請求到的網(wǎng)頁源代碼里,我并沒有找到。但是通過仔細分析、認真查找,終于發(fā)現(xiàn)!

        我也是查了一些資料才知道這里字符都是像URL的%打頭的編碼形式,所以接下來我們要做的是先解析出這部分內(nèi)容,然后轉(zhuǎn)碼一下。

        #?獲取抖音短視頻文件地址
        def?get_file_url(url,?cookie_list):
        ????headers?=?{
        ????????"User-Agent":?"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/87.0.4280.66?Safari/537.36",
        ????????"referer":?"https://www.douyin.com"
        ????????}
        ????
        ????cookie_dict?=?{}
        ????
        ????for?cookie?in?cookie_list:
        ????????cookie_dict[cookie['name']]=cookie['value']
        ????try:????
        ????????resp?=?requests.get(url,?headers=headers,?cookies=cookie_dict)???
        ????????s?=?re.findall(r'',?resp.text)
        ????????json_data?=?json.loads(unquote(s[0]))
        ????????title?=?json_data['21']['aweme']['detail']['desc']
        ????????file_url?=?'https:'+json_data['21']['aweme']['detail']['video']['playApi']

        ????????return?file_url,?title
        ????except:
        ????????print('\n視頻鏈接請求失敗??!')
        ????????return?False

        反正解析出來的結(jié)果很贊,就是能找到!


        3. 下載視頻


        既然知道了視頻的下載地址和視頻名稱,直接下載程序搞起即可:

        #?下載視頻
        def?down_file(file_url,?title):
        ????headers?=?{
        ????????"User-Agent":?"Mozilla/5.0?(Windows?NT?10.0;?Win64;?x64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/87.0.4280.66?Safari/537.36",
        ????????"referer":?"https://www.douyin.com"
        ????????}
        ????start_time?=?time.time()
        ????print('------開始下載------')?
        ????resp?=?requests.get(url?=?file_url,?headers=headers)
        ????if?resp.status_code==200:????
        ????????#?設(shè)置單次寫入數(shù)據(jù)的塊大小
        ????????chunk_size?=?1024*1024*10
        ????????#?獲取文件大小
        ????????file_size?=?int(resp.headers['content-length'])
        ????????#?用于記錄已經(jīng)下載的文件大小
        ????????done_size?=?0
        ????????#?將文件大小轉(zhuǎn)化為MB
        ????????file_size_MB?=?file_size?/?1024?/?1024
        ????????print(f'【視頻大小】:{file_size_MB:0.2f}?MB')
        ????????title?=?re.sub(r'\\|\/|\:|\*|\?|\<|\>|\|','',title)
        ????????with?open(title?+?'.'?+?'mp4',?mode='wb')?as?f:
        ????????????for?chunk?in?resp.iter_content(chunk_size=chunk_size):
        ????????????????f.write(chunk)
        ????????????????done_size?+=?len(chunk)
        ????????????????# print(f'\r下載進度:{done_size/file_size*100:0.2f}%',end='')
        ????????end_time?=?time.time()
        ????????print('------下載完成------')
        ????????cost_time?=?end_time-start_time
        ????????print(f'【累計耗時】:{cost_time:0.2f}?秒')
        ????????print(f'【下載速度】:{file_size_MB/cost_time:0.2f}M/s',?end='\n')
        ????else:
        ????????print('下載失敗??!')

        話不都說了,參考之前《用Python制作一個B站視頻下載小工具(文末附完整代碼》。

        小提示:windows系統(tǒng)下文件名不能含\/:*?<>|,對于解析出來的title需要特別處理下!


        4. 制作GUI


        這個嘛,老粉們應(yīng)該也輕車熟路了,畢竟出過好多小工具制作了(文末我們帶上過往小工具的案例新來的朋友可以看看)。

        #?布局設(shè)置
        layout?=?[[sg.Text('選擇抖音短視頻地址:',font=("微軟雅黑",?12)),sg.InputText(key='url',size=(50,1),font=("微軟雅黑",?10),enable_events=True)?],
        ???????????[sg.Output(size=(66,?12),font=("微軟雅黑",?10))],??
        ???????????[sg.Button('開始下載',font=("微軟雅黑",?10),button_color?='Orange'),
        ???????????sg.Button('關(guān)閉程序',font=("微軟雅黑",?10),button_color?='red'),]
        ??????????]??????

        #?創(chuàng)建窗口
        window?=?sg.Window('抖音短視頻無水印下載工具,作者@微信公眾號:可以叫我才哥',?layout,font=("微軟雅黑",?12),default_element_size=(50,1))????

        #?事件循環(huán)
        while?True:
        ????event,?values?=?window.read()
        ????if?event?in?(None,?'關(guān)閉程序'):
        ????????break
        ????if?event?==?'開始下載':
        ????????Y=1
        ????????url?=?values['url']
        ????????print('獲取視頻信息中.....',?end='')
        ????????cookie_list?=?get_cookies()
        ????????if?Y?==?1:
        ????????????try:
        ????????????????file_url,?title?=?get_file_url(url,?cookie_list)
        ????????????????print(f'\n【視頻名稱】:{title}')
        ????????????????down_file(file_url,?title)
        ????????????except:
        ????????????????print('鏈接有誤,請檢查后輸入!\n')
        ????????????????Y=0
        window.close()??


        5. 打包


        對打包不是很了解的可以參考《2個技巧,學(xué)會Pyinstaller打包的高級用法》,這里就簡單的命令搞定:

        pyinstaller -F -w 抖音短視頻無水印下載工具.py

        以上就是本次全部內(nèi)容啦,如果你感興趣可以點贊在看收藏一波~


        小工具和源代碼鏈接:https://pan.baidu.com/s/12aBwa1-C9TB7L9nd0K-P0Q提取碼:1001

        覺得不錯,請點個在看

        瀏覽 194
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            www 男人天堂 | 成人免费视频观看 | www.操逼网 | 日韩美一级片 | 俺来俺去| 国产老人性视频在线 | 久久人人爽人人爽人人片亞洲 | 亚洲电影一区二区三区 | 9色视频 97人妻人人揉人人躁 原 | 欧美与黑人午夜性猛交 |