91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

怎么使用Python下載抖音無水印視頻

發布時間:2021-12-22 12:39:27 來源:億速云 閱讀:161 作者:小新 欄目:開發技術

小編給大家分享一下怎么使用Python下載抖音無水印視頻,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

Python下載

首先來看一下,直接訪問抖音鏈接得到的結果。

怎么使用Python下載抖音無水印視頻

妥妥的水印...

接下來打開瀏覽器的開發者工具,看看視頻的地址。

怎么使用Python下載抖音無水印視頻

可以發現「playAddr」就是視頻的地址,復制然后訪問。

怎么使用Python下載抖音無水印視頻

鏈接會重定向到以「v9」開頭的鏈接,然而還是有水印。

接下來就是重點了,首先你需要讓你的瀏覽器能夠修改UA,即爬蟲經常用到的「User-Agent」。

我用的是Mac+谷歌瀏覽器,就說說我自己怎么修改的。

Windows的請自行百度~

首先在電腦的文稿中創建一個文件夾。

怎么使用Python下載抖音無水印視頻

這個文件夾的路徑如下。

/Users/star-river/Documents/MyChrome

并且在根目錄的終端運行下面這段代碼。

open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/star-river/Documents/MyChrome

如此我的谷歌瀏覽器就能成功更換UA啦!

怎么使用Python下載抖音無水印視頻

還是直接訪問抖音的鏈接,可以看到結果和最初的不一樣。

就在這個模式下查找接口。

怎么使用Python下載抖音無水印視頻

發現「?item_ids」開頭的這個接口就包含了我們想要的無水印抖音視頻。

就是「play_addr」下的列表中的那兩個鏈接。

其中「?item_ids」開頭的這個接口有兩個參數需要我們在另一個接口中獲取。

怎么使用Python下載抖音無水印視頻

怎么使用Python下載抖音無水印視頻

這樣「item_ids」和「dytk」參數值我們也知道了。

不過我們直接用瀏覽器訪問獲取到的那兩個鏈接是不會直接出現視頻的,需要和上面的一樣。

也改變一下UA,這里的鏈接如果還用「iPhone X」這個UA訪問,會失敗。

什么原因,小F就不得而知了...

把瀏覽器UA改為「Responsive」即可訪問,鏈接會重定向。

怎么使用Python下載抖音無水印視頻

這樣無水印的抖音視頻就搞定了。

不過要是每個視頻都需要這么下載,就太麻煩了。

所以寫了用Python就可以下載視頻的代碼。

import requests
import json
import re

headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/ajpg,*/*;q=0.8',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'cache-control': 'max-age=0',
    # 這個貌似很重要
    'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36',
}


def download(url):
    """
    下載抖音無水印視頻
    """
    # 獲取接口參數
    html = requests.get(url=url, headers=headers)
    title = re.findall('itemId: "(.*?)",', html.text)[0]
    dytk = re.findall('dytk: "(.*?)" }', html.text)[0]

    # 拼接接口
    url_item = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' + title + '&dytk=' + dytk

    # 獲取抖音無水印視頻鏈接
    html_item = requests.get(url=url_item, headers=headers)
    # 字符串轉字典
    content = json.loads(html_item.text)

    # 視頻接口
    url_video = content['item_list'][0]['video']['play_addr']['url_list'][1]
    response = requests.get(url_video, headers=headers, allow_redirects=True)

    # 獲取重定向后的鏈接,這個也是無水印視頻的下載鏈接,不過本次沒用
    redirect = response.url
    print(redirect)

    # 視頻是二進制,需要這種下載辦法
    video = requests.get(url_video, headers=headers).content
    video_name = "douyin.mp4"
    with open(video_name, 'wb') as f:
        f.write(video)
        f.flush()
    print("下載完成")

if __name__ == '__main__':
    # 抖音鏈接
    url = 'https://v.douyin.com/XJj85H/'
    download(url)

無水印視頻完美下載。

接口下載

既然知道了如何用Python下載視頻。

那么小F想讓大家下載的更方便一點,所以將程序部署到了服務器上。

你只需要通過小F的接口即可下載視頻,代碼如下。

from flask import Flask, request, send_file
import requests
import json
import re

app = Flask(__name__)


# 只接受get方法訪問
@app.route("/douyin/", methods=["GET"])
def check():
    headers = {
        'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/ajpg,*/*;q=0.8',
        'accept-encoding': 'gzip, deflate, br',
        'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
        'cache-control': 'max-age=0',
        'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36',
    }
    # 默認返回內容
    return_dict = {'code': 1, 'result': False, 'msg': '請求成功'}
    # 判斷入參是否為空
    if request.args is None:
        return_dict['return_code'] = '504'
        return_dict['return_info'] = '請求參數為空'
        return json.dumps(return_dict, ensure_ascii=False)
    # 獲取傳入的參數
    get_data = request.args.to_dict()
    url = get_data.get('url')

    # 獲取接口參數
    html = requests.get(url=url, headers=headers)
    title = re.findall('itemId: "(.*?)",', html.text)[0]
    dytk = re.findall('dytk: "(.*?)" }', html.text)[0]

    # 拼接接口
    url_item = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' + title + '&dytk=' + dytk

    # 獲取抖音無水印視頻鏈接
    html_item = requests.get(url=url_item, headers=headers)
    # 字符串轉字典
    content = json.loads(html_item.text)

    # 獲取視頻相關的信息
    # data = {}
    # 視頻的描述
    # data['videoDesc'] = content['item_list'][0]['desc']
    # 視頻的封面圖,小圖
    # data['dynamiCoverUrl'] = content['item_list'][0]['video']['dynamic_cover']['url_list'][0]
    # 視頻的封面圖,大圖
    # data['staticCoverUrl'] = content['item_list'][0]['video']['origin_cover']['url_list'][0]
    # 視頻的評論數
    # data['comments'] = content['item_list'][0]['statistics']['comment_count']
    # 視頻的點贊數
    # data['prise'] = content['item_list'][0]['statistics']['digg_count']

    # 視頻接口
    url_video = content['item_list'][0]['video']['play_addr']['url_list'][1]
    response = requests.get(url_video, headers=headers, allow_redirects=True)

    # 獲取重定向后的鏈接,這個也是無水印視頻的下載鏈接,不過本次沒用
    redirect = response.url
    # print(redirect)
    # 視頻的下載鏈接
    # data['videoPlayAddr'] = redirect
    # 返回視頻的信息
    # return_dict['result'] = data
    # 返回結果
    # return json.dumps(return_dict, ensure_ascii=False)

    video = requests.get(url=redirect, headers=headers).content
    video_name = "douyin.mp4"
    with open(video_name, 'wb') as f:
        f.write(video)
        f.flush()
    return send_file('douyin.mp4')
if __name__ == "__main__":
    # 本地調試
    app.run(debug=True)
    # 部署上線
    # app.run(host='127.0.0.1', port=443)

如果本地安裝了Flask以及Requests庫,這個程序是可以直接運行。

并且能夠下載到你所想要的無水印抖音視頻。

# 本地接口

http://127.0.0.1:500/douyin/?url=https://v.douyin.com/CoQBx1/

部署到服務器上的話,則需要使用443端口。

怎么使用Python下載抖音無水印視頻

以上是“怎么使用Python下載抖音無水印視頻”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

永春县| 大安市| 吴忠市| 新沂市| 定安县| 万宁市| 定陶县| 禹城市| 晋城| 岑溪市| 九龙县| 平舆县| 大连市| 防城港市| 无为县| 策勒县| 新源县| 漳平市| 北流市| 梁平县| 留坝县| 鹿泉市| 望奎县| 濮阳县| 马龙县| 遂宁市| 浦北县| 诸暨市| 锦州市| 班玛县| 礼泉县| 仲巴县| 延津县| 左云县| 蒲城县| 保山市| 桐庐县| 六盘水市| 澄迈县| 德安县| 九寨沟县|