办公设备维修网
资讯中心 您所在的位置:网站首页 资讯中心 java通过Jsoup爬取下载抖音无水印视频(下载单个抖音视频)

java通过Jsoup爬取下载抖音无水印视频(下载单个抖音视频)

2024-07-03 19:16:09| 来源: 网络整理

本文章纯属学习专用,不能用于商业,如用于商业,后果自负。 分析网上一大堆,我也是从网上看过来的,然后整理下代码,本人懒,直接上代码:

添加相关依赖 cn.hutoolhutool-all5.4.7org.jsoupjsoup1.11.3 java代码 package com.jd.api.test;import cn.hutool.core.map.MapUtil;import cn.hutool.http.HttpResponse;import cn.hutool.http.HttpUtil;import cn.hutool.json.JSONObject;import org.jsoup.Connection;import org.jsoup.Jsoup;import java.io.*;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;/** * 通过分享链接下载无水印视频 */public class douyin { public static void main(String[] args) throws Exception {// String url = "https://v.douyin.com/JHR8buj/"; String url = "“小心肝”的日常uD83EuDD70#安全第一 https://v.douyin.com/JHR8buj/ 复制此链接,打开抖音,直接观看视频!"; final String videoPath = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="; url = decodeHttpUrl(url); //过滤链接,获取http连接地址 Connection con = Jsoup.connect(url); con.header("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"); Connection.Response resp = con.method(Connection.Method.GET).execute(); String strUrl = resp.url().toString(); String itemId = strUrl.substring(strUrl.indexOf("video/"), strUrl.lastIndexOf("/")).replace("video/", ""); String videoUrl = videoPath + itemId; String jsonStr = Jsoup.connect(videoUrl).ignoreContentType(true).execute().body(); JSONObject json = new JSONObject(jsonStr); String videoAddress = json.getJSONArray("item_list").getJSONObject(0).getJSONObject("video").getJSONObject("play_addr").getJSONArray("url_list").get(0).toString(); String desc = json.getJSONArray("item_list").getJSONObject(0).getStr("desc"); System.out.println("抖音描述:"+desc); HashMap headers = MapUtil.newHashMap(); headers.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1"); String replace = videoAddress.replace("playwm", "play"); //替换成无水印链接 System.out.println(replace); HttpResponse execute = HttpUtil.createGet(replace).addHeaders(headers).execute(); String finalVideoAddress = execute.header("Location"); //下载到指定文件路径 downloadVideo(finalVideoAddress,desc); } /** * 过滤链接,获取http连接地址 * @param url * @return */ public static String decodeHttpUrl(String url) { int start = url.indexOf("http"); int end = url.lastIndexOf("/"); String decodeurl = url.substring(start, end); return decodeurl; } /** * 下载 * @param videoAddress * @param desc */ private static void downloadVideo(String videoAddress,String desc) { int byteRead; try { URL url = new URL(videoAddress); //获取链接 URLConnection conn = url.openConnection(); //输入流 InputStream inStream = conn.getInputStream(); //封装一个保存文件的路径对象 File fileSavePath = new File("D:/douyin/"+desc+".mp4"); //注:如果保存文件夹不存在,那么则创建该文件夹 File fileParent = fileSavePath.getParentFile(); if (!fileParent.exists()) { fileParent.mkdirs(); } if(fileSavePath.exists()){ //如果文件存在,则删除原来的文件 fileSavePath.delete(); } //写入文件 FileOutputStream fs = new FileOutputStream(fileSavePath); byte[] buffer = new byte[1024]; while ((byteRead = inStream.read(buffer)) != -1) { fs.write(buffer, 0, byteRead); } inStream.close(); fs.close(); System.out.println(" -----视频保存路径----- " + fileSavePath.getAbsolutePath()); } catch (FileNotFoundException e) { } catch (IOException e) { } }}

本文注意:此文章纯为了博主自己学习使用,如有侵权,请联系我,我会立马下架



【本文地址】 转载请注明 

最新文章

推荐文章

CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备16040606号-1