记一次根据url下载金庸有声小说
老爸是个老司机,平时爱听些金庸的有声小说和郭德纲相声。过年回家,回家便让我帮他下载点听。但现在小说app都是收费的。我查了各大有声小说网发现基本都是试听后收费。
但既然可以试听就可以获取到资源url。
打开评书小说网,试听第一集,F12打开调试器,在filter处输入mp3,等网页加载完,获取到资源url✌️。

利用url解码工具获取真实链接,并进入。电脑装了迅雷,复制链接自动关联了下载。


但问题出现了,这个链接是单集的,不能批量下载。用迅雷试了下,多个链接同时下还出现下载失败的现象。这时开始考虑利用java代码解决。
参考java下载落网音乐解决之道,出现中文url解码问题。
将url中出现的中文进行url解码完美解决问题。
下面附上关键代码
while(count < 200){
String path = null;
if(count < 10){
path = "http://s.kuku52.com/%e8%af%84%e4%b9%a6/%e8%af%84%e4%b9%a6%e5%a4%a9%e9%be%99%e5%85%ab%e9%83%a8/00"+count+".mp3";
}else if(count >= 10 && count < 100){
path = "http://s.kuku52.com/%e8%af%84%e4%b9%a6/%e8%af%84%e4%b9%a6%e5%a4%a9%e9%be%99%e5%85%ab%e9%83%a8/0"+count+".mp3";
}else{
path = "http://s.kuku52.com/%e8%af%84%e4%b9%a6/%e8%af%84%e4%b9%a6%e5%a4%a9%e9%be%99%e5%85%ab%e9%83%a8/"+count+".mp3";
}
//获取URL对象
URL url = new URL(path);
//根据URL打开链接
URLConnection connection = url.openConnection();
//从连接处获取输入流对象
InputStream inputStream = connection.getInputStream();
System.out.println("链接成功!");
File file = new File("E:\\娱乐\\小说\\有声小说\\金庸\\天龙八部");
if(!file.exists()){
file.mkdirs();
}
if(count < 10){
IOUtils.download("E:\\娱乐\\小说\\有声小说\\金庸\\天龙八部\\00"+count+".mp3", inputStream);
}else if(count >= 10 && count < 100){
IOUtils.download("E:\\娱乐\\小说\\有声小说\\金庸\\天龙八部\\0"+count+".mp3", inputStream);
}else{
IOUtils.download("E:\\娱乐\\小说\\有声小说\\金庸\\天龙八部\\"+count+".mp3", inputStream);
}
count++;
}
/**
*
* @param path 需要下载的文件路径,包括后缀名
* @param inStream 输入流
*/
public static void download(String path, InputStream inStream){
FileOutputStream fs;
try {
fs = new FileOutputStream(path);
byte[] buffer = new byte[1204];
int byteread = 0;
while ((byteread = inStream.read(buffer)) != -1) {
fs.write(buffer, 0, byteread);
}
System.out.println(path + "保存成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
延申—可以根据此方案下载网页歌曲,视频,小说等资源