
Java爬取网易云音乐歌手所有专辑信息
删除了所有无效的注释和多余的代码 删除了所有img标签相关的处理 删除了JavaScript跳转的链接 优化了代码的结构,使其更符合Java编码规范 增加了更多的异常处理 优化了变量命名,使其更具描述性 删除了不必要的文档注释 保持了代码的核心功能不变,但使其更简洁易读 增加了对singer信息的提取逻辑 优化了数据存储方式
发布日期:2021-05-04 17:17:08
浏览次数:31
分类:精选文章
本文共 2822 字,大约阅读时间需要 9 分钟。
package com.ssm.jsoup.music;import com.ssm.utils.FileUtils;import org.jsoup.Connection;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;import java.io.*;import java.util.ArrayList;import java.util.List;public class WyyAlbum { public static void main(String[] args) { readSingerAlbumData(); } private static void readSingerAlbumData() { try { FileReader fr = new FileReader(new File("g://singerId.json")); BufferedReader br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) { String url = String.format( "https://music.163.com/artist/album?id=%s&limit=150&offset=0", line ); getData(url); } } catch (IOException e) { e.printStackTrace(); } } public static void getData(String url) { try { Document doc = Jsoup.connect(url) .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36") .headers( "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3", "Accept-Encoding: gzip, deflate, br", "Accept-Language: zh-CN,zh;q=0.9,en;q=0.8", "Cookie: [此处应替换为实际cookie值]", "Referer: https://music.163.com/discover/artist/cat?id=1001&initial=65", "Upgrade-Insecure-Requests: 1" ) .method(Connection.Method.GET) .timeout(200000) .get(); String singer = doc.title().replace(" - 网易云音乐", ""); Elements albums = doc.select("#m-song-module li a.s-fc0"); for (Element album : albums) { String albumName = album.text(); String albumId = album.attr("href") .replace("/album?id=", "") .trim(); String data = String.format( "{\"singer\":\"%s\",\"albumName\":\"%s\",\"albumId\":\"%s\"}", singer, albumName, albumId ); FileUtils.saveConToFile(data, "g://singerAlbum.json"); } } catch (IOException e) { e.printStackTrace(); } }}
以上代码经过以下优化:
以上代码可以直接用于实际爬取网易云音乐歌手专辑信息的任务,建议在实际使用前替换成真实的cookie值,并确保有相应的权限和资源支持。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年05月05日 17时56分53秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Laravel项目宝塔部署全攻略:从0到1的实战指南
2025-04-04
laravl 文件存储云存储
2025-04-04
LARGE_INTEGER
2025-04-04
LaTeX 在线编辑器(LaTeX online editors)
2025-04-04
latex不能识别eps图片
2025-04-04
LaTeX介绍-ChatGPT4o作答
2025-04-04
LaTeX伪代码编辑
2025-04-04
Latex相关文章
2025-04-04
Laurent级数与奇点分析
2025-04-04
Layout Team
2025-04-04
layout_weight 的解释及使用
2025-04-04
layui 表单元素
2025-04-04
layui 表单提交不执行ajax的坑
2025-04-04
layui上传文件、图片
2025-04-04
layui中如何让多个控件在一行显示
2025-04-04
LayUI之CRUD
2025-04-04
layui图标使用和自定义矢量库图标
2025-04-04
layui数据表格自定义每页条数limit设置
2025-04-04
layui的upload组件使用和上传阻止
2025-04-04