python爬虫+抖音分享链接=可直接下载视频链接

"""
20210429更新文件下载功能,以时间戳为文件名的MP4格式文件。
#以下代码仅供学习参考。
"""


import requests
import re
import time

headers1 = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
base_url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="


def parse(dy_link):
    stats1 = requests.get(url=dy_link, headers=headers1)
    locationlink = stats1.url  # 使用response.url ,可以直接提取location 链接地址。
    pp1 = requests.get(url=locationlink, headers=headers1)
    referer_url = pp1.url
    header2 = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36',
        'referer': referer_url
    }
    videonum = re.search(r"\d+", referer_url).group()
    baseurl = base_url + videonum
    videourl = requests.get(url=baseurl, headers=header2).json()  # 响应回来得页面是ajax 技术,需要用.json将内容提取出来
    videourl = videourl['item_list'][0]['video']['play_addr']['url_list'][0]  # 提取跳转链接
    downloadUrl = requests.get(url=videourl, headers=header2).url  # 获取到视频链接
    #return print("解析后抖音小视频下载链接:" + downloadUrl + '.mp4')

    """
    20210429
    以时间为文件名,直接下载成MP4格式的视频
    """
    filename = str(time.time())+".mp4"  #以时间为文件名,直接下载成MP4格式的视频
    mp4file = requests.get(url = downloadUrl,headers=headers1).content
    with open(filename,"wb") as f :
        f.write(mp4file)
        print("视频文件已下载完成。")
    """下载速度,取决于网络速度(待定)"""

if __name__ == '__main__':
    while True:
        inputurl = input("请输入抖音分享URL:")  # 格式eg:https://v.douyin.com/JTQaGrX/
        t1 = time.time()
        parse(inputurl)
        t2 = time.time()
        tt = t2 - t1
        print('解析耗时(sec):', round(tt, 2))