admin管理员组文章数量:1650967
使用java的HttpClient实现酷狗音乐Top500歌曲的下载
- 歌单URL
https://www.kugou/yy/rank/home/1-8888.html?from=rank
访问这个URL可以看到 22 条歌曲列表,把 1-8888 改成 2-8888 就可以看到下 22 首
- 点一首歌进入播放页,然后打开谷歌浏览器控制台,在页面源码搜索mp3,就可以找到歌曲播放URL
但是用代码抓取的时候,返回源码中是没有这个MP3地址的,那肯定是因为网站使用了JS来加载MP3链接。
于是我们刷新页面,看看是哪个请求的响应中包含了这个MP3链接。
最终在
https://wwwapi.kugou/yy/index.php?r=play/getdata
&callback=jQuery19103526571885218994_1559220496485
&hash=448A90C4561C32FEC965970C9F401411
&album_id=10852208
&dfid=2lP8VL1Bb0DP09ymCH4Wx9F0
&mid=9517924789f90af8e2d59c827583cdd2
&platid=4
&_=1559220496486
这个请求的响应中找到了MP3链接
我们把它复制到浏览器的地址栏中进行请求
可以正常进行播放。
抓取步骤:
- 访问歌单页
- 找到歌单列表,找到每首歌的播放页面URL进行请求
- 在响应中找到hash值(通过hash值确定是哪首歌)
var dataFromSmarty = [{“hash”:“448A90C4561C32FEC965970C9F401411”,
“timelength”:“204002”,
“audio_name”:"\u674e\u4e3d - \u6070\u6070\u76f8\u53cd",
“author_name”:"\u674e\u4e3d",
“song_name”:"\u6070\u6070\u76f8\u53cd",
“album_id”:0}],//当前页面歌曲信息
playType = “search_single”;//当前播放
4.将hash值填充到获取MP3链接的URL中,进行请求
5.获取到这首歌的MP3链接,进行下载,存储,抓取完成
实现代码:
package kugouspider;
import net.sf.json.JSONObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.util.Map;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import static kugouspider.Parse.parseTitleAndPlayurl;
/**
* 抓取类
*/
public class Crawler {
private static Log log = LogFactory.getLog(Crawler.class);
// 保存歌单的路径
public static String DOWNLOAD_FILEPATH = "I:\\Java\\6_project\\KuGouSpider\\music\\";
// 歌单链接. 通过改变PAGE来获取下一页的内容
public static String MUSICLIST_LINK = "https://www.kugou/yy/rank/home/PAGE-8888.html?from=rank";
// 获取MP3链接的请求URL
public static String MP3_LINK = "https://wwwapi.kugou/yy/index.php?r=play/getdata" +
"&callback=jQuery19103526571885218994_TIME01" +
"&hash=HASH" +
"&album_id=10852208" +
"&dfid=2lP8VL1Bb0DP09ymCH4Wx9F0" +
"&mid=9517924789f90af8e2d59c827583cdd2" +
"&platid=4" +
"&_=TIME02";
public static void test() {
String title = "陈雪凝 - 你的酒馆对我打了烊";
String playHref = "https://www.kugou/song/tlk6517.html";
downLoad(title, playHref);
}
public static void main(String[] args) {
for (int i = 4; i <= 4; i++) {
// 把PAGE用i替换,以获取每一页的内容
// https://www.kugou/yy/rank/home/1-8888.html?from=rank 就是第一页歌单
String link = MUSICLIST_LINK.replace("PAGE", i + "");
String content = getMusicList(link);
本文标签: 音乐下载酷狗HttpClient
版权声明:本文标题:HttpClient 实现酷狗 Top500 音乐下载 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1729548371a1205915.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论