用Java下载MP4文件?

用Java下载MP4文件?,java,html,jsoup,Java,Html,Jsoup,我试图创建一个java程序,使用JSoup从特定网站下载视频。然而,我现在意识到JSoup不能下载mp4文件;它们不受支持。目前,我有它,所以它连接到网站,获取IFrame链接,它获取存储在另一个网站上的下载链接,然后从服务器获取直接下载链接。现在,我不知道如何下载这个文件。我还是Java新手,所以我不知道如何使用Https请求或File.IO实用程序以这种方式下载文件。我查了一些例子,但没有一个对我有用。我还尝试使用ApacheCommonsIO,但无法将其添加为库;每当我转到“添加文件或目录

我试图创建一个java程序,使用JSoup从特定网站下载视频。然而,我现在意识到JSoup不能下载mp4文件;它们不受支持。目前,我有它,所以它连接到网站,获取IFrame链接,它获取存储在另一个网站上的下载链接,然后从服务器获取直接下载链接。现在,我不知道如何下载这个文件。我还是Java新手,所以我不知道如何使用Https请求或File.IO实用程序以这种方式下载文件。我查了一些例子,但没有一个对我有用。我还尝试使用ApacheCommonsIO,但无法将其添加为库;每当我转到“添加文件或目录”时,.Java文件都不会显示(我还尝试了“选择库类型”),也不允许我拖放文件。不管怎么说,我不知道还能做什么,所以我把这个贴出来。任何帮助都将不胜感激,谢谢

这是我目前的代码:

package com.trentmenard;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

import java.io.IOException;


class ExtractorAndDownloader {
    private String URL;
    private Document currentWebsite;

    ExtractorAndDownloader(String URL) {
        this.URL = URL;
        getIFrameLink(URL);
    }

    private void getIFrameLink(String URL) {
        System.out.println("Attempting Connection to: " + URL);
        try {
            currentWebsite = Jsoup.connect(URL).get();
            System.out.println("Connection Successfully Established!");
            Element iFrame = currentWebsite.selectFirst("iframe");
            String iFrameLink = iFrame.attr("src");
            System.out.println("Grabbing IFrame Link: " + iFrameLink);
            getDownloadLink(iFrameLink);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Connection Failed!");
        }
    }

    private void getDownloadLink(String URL) {
        System.out.println("Attempting Connection to: " + URL);
        try {
            currentWebsite = Jsoup.connect(URL).get();
            System.out.println("Connection Successfully Established!");
            Element hiddenElementID = currentWebsite.getElementById("id");
            String hiddenElementIDValue = hiddenElementID.attr("value");
            System.out.println("Grabbing Hidden Element ID Value: " + hiddenElementIDValue);
            System.out.println("Grabbing ReDirect Link: " + " https://www.vidstreaming.io/download?id=" + hiddenElementIDValue);
            getReDirectDownloadLink("https://www.vidstreaming.io/download?id=" + hiddenElementIDValue);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Connection Failed!");
        }
    }

    private void getReDirectDownloadLink(String URL) {
        System.out.println("Attempting Connection to: " + URL);
        try {
            currentWebsite = Jsoup.connect(URL).get();
            System.out.println("Connection Successfully Established!");
            Element dowloadClassOriginal = currentWebsite.getElementsContainingOwnText("Download (orginalP - mp4)").first();
            String dowloadClassOriginalReDirectLink = dowloadClassOriginal.attr("href");
            System.out.println("Grabbing ReDirect Link: " + dowloadClassOriginalReDirectLink);
            downloadUsingDirectLink(dowloadClassOriginalReDirectLink);
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("Connection Failed!");
        }
    }

    private void downloadUsingDirectLink(String URL) {
        System.out.println("Attempting Connection to: " + URL);
        try{
            currentWebsite = Jsoup.connect(URL).get();
            System.out.println("Connection Successfully Established!");
        }
        catch (IOException e){
            e.printStackTrace();
            System.out.println("Connection Failed!");
        }

    }
}
下面是错误消息,表示该文件不受支持:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\lib\idea_rt.jar=61448:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_201\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_201\jre\lib\rt.jar;C:\Users\Trent\Desktop\SAOEpisodeDownloader\out\production\SAOEpisodeDownloader;C:\Users\Trent\Downloads\jsoup-1.12.1.jar" com.trentmenard.Main
Attempting Connection to: https://swordartonlineepisode.com/sword-art-online-season-3-episode-1-english-dubbed-watch-online/
Connection Successfully Established!
Grabbing IFrame Link: https://vidstreaming.io/streaming.php?id=MTEzMzQ1
Attempting Connection to: https://vidstreaming.io/streaming.php?id=MTEzMzQ1
Connection Successfully Established!
Grabbing Hidden Element ID Value: MTEzMzQ1
Grabbing ReDirect Link:  https://www.vidstreaming.io/download?id=MTEzMzQ1
Attempting Connection to: https://www.vidstreaming.io/download?id=MTEzMzQ1
Connection Successfully Established!
Grabbing ReDirect Link: https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(orginalP - mp4) Sword+Art+Online%3A+Alicization+%28Dub%29+Episode+1
Attempting Connection to: https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(orginalP - mp4) Sword+Art+Online%3A+Alicization+%28Dub%29+Episode+1
org.jsoup.UnsupportedMimeTypeException: Unhandled content type. Must be text/*, application/xml, or application/xhtml+xml. Mimetype=video/mp4, URL=https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(orginalP%20-%20mp4)%20Sword+Art+Online%3A+Alicization+%28Dub%29+Episode+1
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:770)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:705)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:295)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:284)
    at com.trentmenard.ExtractorAndDownloader.downloadUsingDirectLink(ExtractorAndDownloader.java:68)
    at com.trentmenard.ExtractorAndDownloader.getReDirectDownloadLink(ExtractorAndDownloader.java:58)
    at com.trentmenard.ExtractorAndDownloader.getDownloadLink(ExtractorAndDownloader.java:43)
    at com.trentmenard.ExtractorAndDownloader.getIFrameLink(ExtractorAndDownloader.java:27)
    at com.trentmenard.ExtractorAndDownloader.<init>(ExtractorAndDownloader.java:16)
    at com.trentmenard.Main.main(Main.java:7)
Connection Failed!

Process finished with exit code 0
“C:\Program Files\Java\jdk1.8.0\U 201\bin\Java.exe”-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\lib\IDEA\u rt.jar=61448:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.1\bin”-Dfile.encoding=UTF-8-类路径“C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\charsets.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\deploy.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\access-bridge-64.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\cldrdata.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\dnsns.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\jaccess.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\jfxrt.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\localedata.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\nashorn.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\sunec.jar;C:\ProgramFiles\Java\jdk1.8.0\u 201\jre\lib\ext\sunjce\u provider.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\sunmsapi.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\sunpkcs11.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\ext\zipfs.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\javaws.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\jce.jar;C:\ProgramFiles\Java\jdk1.8.0\u 201\jre\lib\jfr.jar;C:\ProgramFiles\Java\jdk1.8.0\u 201\jre\lib\jfxswt.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\jsse.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\management-agent.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\plugin.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\resources.jar;C:\ProgramFiles\Java\jdk1.8.0\U 201\jre\lib\rt.jar;C:\Users\Trent\Desktop\SAOEpisodeDownloader\out\production\SAOEpisodeDownloader;C:\Users\Trent\Downloads\jsoup-1.12.1.jar“com.trentmenard.Main
正在尝试连接到:https://swordartonlineepisode.com/sword-art-online-season-3-episode-1-english-dubbed-watch-online/
连接成功建立!
抓取IFrame链接:https://vidstreaming.io/streaming.php?id=MTEzMzQ1
正在尝试连接到:https://vidstreaming.io/streaming.php?id=MTEzMzQ1
连接成功建立!
抓取隐藏元素ID值:MTEzMzQ1
抓取重定向链接:https://www.vidstreaming.io/download?id=MTEzMzQ1
正在尝试连接到:https://www.vidstreaming.io/download?id=MTEzMzQ1
连接成功建立!
抓取重定向链接:https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(原版-mp4)剑术+艺术+在线%3A+阿里化+28Dub%29+插曲+1
正在尝试连接到:https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(原版-mp4)剑术+艺术+在线%3A+阿里化+28Dub%29+插曲+1
org.jsoup.unsupportAdminType异常:未处理的内容类型。必须是text/*、application/xml或application/xhtml+xml。Mimetype=video/mp4、URL=https://st1x.cdnfile.info/user1342/1f1b04321e51fac1c1d1c23a1de4f7f0/EP.1.mp4?token=QPVm8x5GnYo6uFYLHqfjwg&expires=1578391941&id=113345&title=(初始值%20-%20mp4)%20Word+Art+在线%3A+阿里化+28Dub%29+插曲+1
位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:770)
位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:705)
位于org.jsoup.helper.HttpConnection.execute(HttpConnection.java:295)
位于org.jsoup.helper.HttpConnection.get(HttpConnection.java:284)
在com.trentmenard.ExtractorAndDownloader.downloads上使用DirectLink(ExtractorAndDownloader.java:68)
位于com.trentmenard.ExtractorAndDownloader.getReDirectDownloadLink(ExtractorAndDownloader.java:58)
位于com.trentmenard.ExtractorAndDownloader.getDownloadLink(ExtractorAndDownloader.java:43)
位于com.trentmenard.ExtractorAndDownloader.getIFrameLink(ExtractorAndDownloader.java:27)
位于com.trentmenard.ExtractorAndDownloader。(ExtractorAndDownloader.java:16)
位于com.trentmenard.Main.Main(Main.java:7)
连接失败!
进程已完成,退出代码为0
您可以试试这个

private static void getVideo(String src) throws IOException {

    String folder = null;

    //Exctract the name of the video from the src attribute
    int indexname = src.lastIndexOf("/");

    if (indexname == src.length()) {
        src = src.substring(1, indexname);
    }

    indexname = src.lastIndexOf("/");
    String name = src.substring(indexname, src.length());

    System.out.println(name);

    //Open a URL Stream
    URL url = new URL(src);
    InputStream in = url.openStream();
    OutputStream out = new BufferedOutputStream(new FileOutputStream( folderPath+ name));
    for (int b; (b = in.read()) != -1;) {
        out.write(b);
    }
    out.close();
    in.close();
}

来源:

它说“folderPath”变量“无法解析符号”,因此我将其设置为本地字符串变量,并带有指向桌面的路径。这修复了初始错误消息,但随后我得到了“File Not Found”异常“错误。这不是我应该为文件夹路径设置的吗?代码:对于“找不到文件”异常,如果文件不存在或无法创建,FileOutputStream将抛出此错误。为了确保在创建FileOutputStream(如果不存在,则使用createNewFile()创建)之前,您可能应该首先测试该文件是否存在
file yourFile=new file(“score.txt”);如果(!yourFile.exists()){yourFile.createNewFile();}FileOutputStream of ile=newfileoutputstream(yourFile,false)[链接]