# kugou-spider **Repository Path**: fsl123/kugou-spider ## Basic Information - **Project Name**: kugou-spider - **Description**: 下载酷狗音乐的简单爬虫 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2019-06-12 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kugou-spider 从酷狗网下载音乐的简单爬虫
设计思路:
1.循环访问https://www.kugou.com/yy/rank/home/{PAGE_NUM}-8888.html?from=homepage,每次将{PAGE_NUM}替换为具体的页码,一共循环23次
2.获取具体某页所有的歌曲列表(含具体url、hash值、album_id),将hash和album_id分别作为key和value放入ehcache中
3.逐个访问具体音乐的url,获取页面里面的hash,到缓存中获取album_id,然后替换掉下请求中的{HASHCODE}和{ALBUMID},然后{TIME}用System.currentTimeMillis() 替换,然后访问替换后的请求
https://wwwapi.kugou.com/yy/index.php?r=play/getdata&callback=jQuery19108318842169864549_1558160178250& hash={HASHCODE}&album_id={ALBUMID}&dfid=4Vyhka0JsPzT0DLMy10TfJPj&mid=122dc1e8e26152d6ec1aca669ca448d3&platid=4&_={TIME}
4.根据第3步的返回结果json,解析出MP3真实的url;如果第3步返回err_code不为0,说明爬虫被识别了,需要重新获取新的代理ip,再次访问
5.下载到本地磁盘,如果是重复歌曲不再下载

用到的技术:
1.HttpClient抓包
2.Jsoup解析html
3.FastJson解析json报文
4.ehcache缓存用来识别是否为重复歌曲、识别代理IP是否使用过、记录歌曲的hash和alum_id
5.log4j记录日志
6.commons-io执行下载,不用自己写流了

遗留问题:
1.只能抓取到免费歌曲,对于收费歌曲不能抓取,其实我们也不该抓取
2.代码中为了方便用了很多static,不能支持多线程或并发抓取

声明:
本爬虫小程序仅限个人学习交流用。本程序和程序抓取到的歌曲均不可用于商业用途,否则后果自负!!!
本爬虫小程序仅限个人学习交流用。本程序和程序抓取到的歌曲均不可用于商业用途,否则后果自负!!!
本爬虫小程序仅限个人学习交流用。本程序和程序抓取到的歌曲均不可用于商业用途,否则后果自负!!!