根据获得歌手的json数据的url
https://u.y.qq.com/cgi-bin/musicu.fcg?format=jsonp&inCharset=utf8&outCharset=utf-8&data=%7B%22comm%22%3A%7B%22ct%22%3A24%2C%22cv%22%3A10000%7D%2C%22singerList%22%3A%7B%22module%22%3A%22Music.SingerListServer%22%2C%22method%22%3A%22get_singer_list%22%2C%22param%22%3A%7B%22area%22%3A-100%2C%22sex%22%3A-100%2C%22genre%22%3A-100%2C%22index%22%3A1%2C%22sin%22%3A0%2C%22cur_page%22%3A1%7D%7D%7D
json数据部分截图
根据上面链接里获得数据,取出歌手mid,然后再根据下面的url获得歌曲列表
https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg?inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq&needNewCode=0&singermid=002J4UUk29y8BY&order=listen&begin=0&num=30
json数据部分截图
下面是调用的详细代码,其中的HTTPUtil.sendGet方法是发送http请求的代码。在我这个博客
https://blog.csdn.net/Hello_Ray/article/details/80762232 里的代码11行代码和42-48行有http发送请求的代码,可以参考那个。
在测试这个方法,dao方法可以注释掉, HotSongSpider是引入别的类中转换list的方法,可以注释掉。
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.jsoup.Jsoup;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.*;
/**
* description:
*
* @author chenrui
* @since 2018-08-09
*/
@Component
public class SpiderSingerNew {
private static Logger log = LogManager.getLogger(SpiderSingerNew.class);
@Resource
private HotSongSpider hotSongSpider;
@Resource
private HotSongDao hotSongDao;
private Integer singerListTotalPage = 1; //所有页数
private Integer singerSongListTotalPage = 1;
//成功的歌手列表
List singerList = new ArrayList<>();
//爬取歌手列表出现的错误标签和页面
public static Queue
非常感谢有小伙伴能够重复和测试我的代码,如果在重复中出现问题,或者有关键方法没有引入。请联系我,或者留言。
特别注意:由于水平有限代码肯定存在不足的地方,希望能够指正,那么我将做到更好。
email:[email protected]