当前位置: 首页 > news >正文

抖音分享链接视频下载

import requests
import re
from urllib.parse import unquote
import json
from pprint import pprint
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import os


def get_video_id(url):
    # 创建一个Chrome WebDriver实例
    chrome_options = Options()
    chrome_options.add_argument("--headless")  # This line makes Chrome run in headless mode
    chrome_options.add_argument("--disable-logging")
    # Initialize the WebDriver with the specified options
    driver = webdriver.Chrome(options=chrome_options) 
    # 打开网页
    driver.get(url)
    # 获取跳转后的网址
    final_url = driver.current_url
    # 打印跳转后的网址
    print("跳转后的网址:", final_url)
    # 关闭WebDriver实例
    #driver.quit()
    video_id = final_url.split("/video/")[1]
    return video_id

def download_byid(video_id):
    url ="https://www.douyin.com/discover?modal_id="+video_id
    print(url)
    headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
    # 'Cookie':''
    }
    response = requests.get(url= url,headers=headers)
    print(response)
    html = response.text
    #
    info = re.findall('<script id="RENDER_DATA" type="application/json">(.*?)</script>',html)
    info_json = unquote(info[0])

    #pprint(info_json)
    json_data = json.loads(info_json)

    video_url = 'https:'+json_data['app']['videoDetail']['video']['bitRateList'][0]['playAddr'][0]['src']
    video_title = json_data['app']['videoDetail']['desc']
    pprint(video_url)
    pprint(video_title)
    video_content = requests.get(url = video_url,headers=headers).content
    with open ("download/"+video_id+'.mp4',mode= 'wb')as f:
        f.write(video_content)
    with open ("download/"+video_id+'.txt',mode= 'w', encoding='utf-8')as f:
        f.write(video_title)
    return "download/"+video_id+'.mp4',video_title,video_url


if __name__ == "__main__":
    url2 = 'https://v.douyin.com/i2G6aAcM/'
    print(get_url(url2))
    download(url2)
 

相关文章:

  • [Algorithm][动态规划][简单多状态DP问题][按摩师][打家劫舍Ⅱ][删除并获得点数][粉刷房子]详细讲解
  • 手机相册的照片彻底删除了怎么恢复?删除照片恢复的5种方法
  • 甘肃教育杂志社-甘肃教育编辑部
  • CSP俄罗斯方块(简单易懂)
  • C语言笔记21 •模拟atoi函数•
  • conda常见命令
  • 汽车R155法规中,汽车获取到的VTA证书,E后面的数字表示什么意思?
  • MySQL入门学习-查询进阶.别名
  • 携手AI,如何共赢未来?
  • java string类
  • 每日力扣刷题day05(小白简单题)
  • Python游戏编程:一步步用Python打造经典贪吃蛇小游戏
  • 知能行——考研数学利器
  • 牛马真的沉默了,入职第一天就干活
  • 梦幻西游手游挂机脚本,搬砖挂机赚米项目,号称单窗口日收益60+(教程+软件)
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • docker容器内的网络抓包
  • DOM的那些事
  • ECMAScript入门(七)--Module语法
  • httpie使用详解
  • iOS 系统授权开发
  • Laravel Telescope:优雅的应用调试工具
  • MobX
  • node入门
  • Promise初体验
  • Redis字符串类型内部编码剖析
  • Redux系列x:源码分析
  • SQLServer之创建数据库快照
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 对象引论
  • 实战|智能家居行业移动应用性能分析
  • -- 数据结构 顺序表 --Java
  • 通信类
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 小程序测试方案初探
  • 一个项目push到多个远程Git仓库
  • 智能合约Solidity教程-事件和日志(一)
  • MiKTeX could not find the script engine ‘perl.exe‘ which is required to execute ‘latexmk‘.
  • kubernetes资源对象--ingress
  • ​​​​​​​​​​​​​​Γ函数
  • ​ubuntu下安装kvm虚拟机
  • #预处理和函数的对比以及条件编译
  • $jQuery 重写Alert样式方法
  • (1)Jupyter Notebook 下载及安装
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (libusb) usb口自动刷新
  • (vue)el-tabs选中最后一项后更新数据后无法展开
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (黑马点评)二、短信登录功能实现
  • (十八)Flink CEP 详解
  • (转)我也是一只IT小小鸟