網站開發:爬取一撥網易雲音樂的歌詞

       啦啦啦,之前一直在做個音樂網站,然後涉及到了歌詞,可當時自己不懂歌詞的爬取鏈接,所以一直採用的手錄歌詞的方法,費時又費力。前兩天在一篇CSDN文章上發現了網易雲的歌詞鏈接。然後就立馬利用起來爬取一撥歌詞...鏈接如下所示

http://music.163.com/api/song/lyric?id="+id+"&lv=1&kv=1&tv=-1

       鏈接裏面其實返回的是包含歌詞的json信息,如果要得到純歌詞,還要對其進行一番提取。目前可以操作json的jar包也還挺多的。不過嘛,我也沒心思去學習使用,所以一般都是自寫方法去提煉需要的信息,雖然麻煩點,但也還好啦,能得到想要的結果。

       如下是爬取歌詞的代碼

1.首先定義二維數組,包含所有要下載歌詞的歌曲名以及在網易雲音樂上的id

private static String song[][]={
			{"25643328","信仰-張信哲"},{"254574","後來-劉若英"},{"174934","無顏女-徐良,小凌"},{"174962","和平分手-徐良"},{"26609879","情話-徐良,孫羽幽"},
			{"174960","犯賤-徐良"},{"174961","紅裝-徐良"},{"25918133","那時雨-徐良"},{"27890395","抽離-徐良,劉丹萌"},{"174963","客官不可以-徐良,小凌"},
			{"26609877","七秒鐘的記憶-徐良,孫羽幽"},{"375381","不想長大-S.H.E"},{"354620","只對你有感覺-飛輪海 ,田馥甄"},{"167815","情侶裝-許嵩"},{"394748","棉花糖-至上勵合"},
			{"122535","最後一次的溫柔"},{"28853662","秋殤別戀"},{"452986458","紅昭願"},{"486111543","7538(Me U-Remix)"},{"515143305","9420"},
			{"31134193","出賣"},{"31654343","不將就"},{"29764564","自拍"},{"27731177","太坦白"},{"27731176","模特"},
			{"29764562","作曲家"},{"133998","老街"},{"27678655","李白"},{"149787","我不是沒臉的男孩"},{"25864481","微情歌"},
			{"149751","那些學校沒有教過的事兒"},{"25640407","一千個分手的理由"},{"149778","最簡單的聲音"},{"149789","致命的甜蜜"},{"149763","畢業後你不是我的"},
			{"167888","認錯"},{"167873","多餘的解釋"},{"167827","素顏"},{"167876","有何不可"},{"553755659","可不可以-張紫豪"},
			{"175072","不再聯繫-夏天Alex"},{"28661853","我配不上你-夏天Alex"},{"69827","太多-陳冠蒲"},{"156193","爲你寫詩"},{"1330348068","起風了"},
			{"77131","有多少愛可以重來-迪克牛仔"},{"26599373","當我孤獨時還可以抱你-鄭源"},{"27808044","醜八怪-薛之謙"},{"169185","認真的雪-薛之謙"},{"415792881","剛剛好-薛之謙"},
			{"27955654","其實-薛之謙"},{"32192436","紳士-薛之謙"},{"32507038","演員"},{"163123","秋天不回來-王強"},{"5256103","死了都要愛"},
			{"19081573","Util You"},{"2006865","Only Love"},{"19081569","Breathless"},{"21157332","One Day"},{"472361096","Despacito (Remix)"},
			{"25795016","有沒有人告訴你-陳楚生"},{"165367","三國殺-汪蘇瀧"},{"36990266","Faded-Alan Walker&Iselin Solheim"},{"150361","三國戀-Tank"},{"77437","2002年的第一場雪-刀郎"},
			{"557584888","往後餘生-馬良"},{"486814412","沙漠駱駝"},{"29019227","sugar"},{"1210461","what are words"},{"28832241","superheroes"},
			{"4875306","逍遙嘆"},{"4872532","愛的華爾茲"},{"4872530","讓我爲你唱首歌"},{"413812448","大魚"},{"110184","謝謝你的愛"},
			{"178176","擦肩而過"},{"88926","想你的夜"},{"526464293","空空如也"},{"523251118","說散就散"},{"4172882","Fairy Tale"},
			{"126443","窗外"},{"482999696","夏至未至"},{"483671599","追光者"},{"569200213","消愁"},{"569213220","像我這樣的人"},
			{"28481105","機器鈴 砍菜刀-張衛"},{"28240119","倍兒爽-大張偉"},{"413829859","童話鎮-暗槓"},{"95843","梔子花開-何炅"}
	};

2.接下來寫方法爬取

/**
 * @desc 爬取歌詞並下載
 * @author zcl
 * @date 2019年4月5日
 * @param id	歌曲的id
 * @param name	歌曲名
 * @throws IOException
 */
public static void downloadLyric(String id,String name) throws IOException{
	String lyricUrl="http://music.163.com/api/song/lyric?id="+id+"&lv=1&kv=1&tv=-1";
	Document doc=Jsoup.connect(lyricUrl).get();
	String lyric=doc.toString();
	lyric=lyric.substring(lyric.indexOf("lyric\"")+8, lyric.indexOf("klyric")-4);//去掉其他json格式
	lyric=lyric.replace("\\n", "\r");//\n替換爲\r
	writeToFile(lyric, name);
}

3.再接下來定義方法,將爬取到的歌詞下載至本地文件中

/**
 * 輸出歌詞至指定文件中
 * @desc 
 * @author zcl
 * @date 2019年4月5日
 * @param lyric	爬取的歌詞
 * @param name	歌曲名即保存的文件名
 * @throws IOException
 */
public static void writeToFile(String lyric,String name) throws IOException{
	File file=new File("E:/AAAA/alyric/"+name+".txt");
	file.createNewFile();
	
	FileOutputStream fos=new FileOutputStream(file);
	fos.write(lyric.getBytes());
	System.out.println("已保存《"+name+"》的歌詞至“"+file.getAbsolutePath()+"”文件");
}

4.最後,在main函數中執行循環來逐個下載歌詞。

for(int i=0;i<song.length;i++){
	downloadLyric(song[i][0],song[i][1]);
}

 

 

 

本篇博文已同步至本人個人博客網站,歡迎訪問

歡迎大家訪問我的視頻網站哆啦網,註冊並登陸後即可擁有發表評論,記錄自己的播放,搜索,登陸記錄以及收藏視頻等功能。我在553影院等你

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章