demo-musicGet(爬取音乐数据笔记)

该博客主要记录了一次使用Java爬虫框架webmagic爬取酷我音乐数据的过程。作者首先分析了多个音乐平台,选择酷我音乐作为目标,因为其爬取难度较低。在编码阶段,详细介绍了每个页面类型的价值数据和编码策略,包括歌手列表、歌手首页、歌曲列表页和歌曲详情页的处理。此外,还提到了数据持久化、爬虫状态监控和遇到的内存溢出问题及其解决方案。博客最后分享了GitHub项目地址。
摘要由CSDN通过智能技术生成
  • 本demo是为了提高对Java爬虫框架webmagic的使用熟悉度。
  • 本文是为了记录一些关于本demo的重要的点。
  • 启示:代码中一点不起眼的小瑕疵,在硬件条件一般&&程序的高速运转中,可能被无限放大,最后导致程序崩溃。

S1:分析

  • 作者分析了QQ音乐,百度音乐盒,网易云音乐,酷狗音乐,酷我音乐等音乐网站的api,发现酷我音乐爬取难度最低,所以准备爬取酷我音乐网

  • QQ音乐
    歌手列表:https://y.qq.com/portal/singer_list.html
    歌手首页:https://y.qq.com/n/yqq/singer/002J4UUk29y8BY.html#
    歌曲列表:
    https://c.y.qq.com/v8/fcg-bin/fcg_v8_singer_track_cp.fcg
    酷我:
    歌手列表:
    http://www.kuwo.cn/artist/indexAjax?category=0&prefix=&pn=0
    歌手首页:
    http://www.kuwo.cn/artist/content?name=xx
    歌曲列表:
    http://www.kuwo.cn/artist/contentMusicsAjax?artistId=226572&pn=1&rn=15
    歌曲详情:
    http://www.kuwo.cn/yinyue/7149583
  • 注意的点:
    • 歌手列表从“热门”中查询,因为这样可以避免再去按照ABCDEFG…查询
    • 歌手列表中category = 0代表从“热门”这个category中查询,pn是页数(从0开始)

S2:编码

  • 编码分析:

    • 如果是歌手列表页面

      • 价值数据:歌手的首页URL,其他的歌曲列表页面
      • 编码说明:

        //    歌曲列表
        private String SONG_LIST_VIEW = DOMAIN + "/artist/contentMusicsAjax\\?artistId=\\d+&pn=\\d*&rn=\\d*";
        

        需要把本页所有(12个)歌手的首页URL存入URL待抓取队列中。

                        page.addTargetRequests(page.getHtml().links().regex(SINGER_INDEX_VIEW).all());

        另外,还需要做一件事情,那就是在什么时候把剩余的歌手列表页面加入到URL待抓取队列中,这一点我觉得我写的不好,我是在程序处理完第一个页面接着就把剩余的六千多个页面加到内存中去的。不好的原因:过多的List还有后期的List太多导致堆内存溢出,进而导致程序崩溃,我的解决方案仅仅是设置JVM启动参数

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值