QQ音樂》是大家比較常用的音樂播放軟件,但好多音樂因版權的原因需要付費后才能下載,今天就教大家免費下載QQ音樂中的付費音樂。
1、首先打開瀏覽器(這里以搜狗瀏覽器為例),在地址欄中輸入QQ音樂的官方地址,進入QQ音樂官方網站的首頁。
QQ音樂首頁
2、在QQ音樂首頁的搜索框中輸入你想要的歌曲并搜索(這里以回小仙的《醒不來的》為例)。
3、點擊此歌曲的播放按鈕,跳轉到播放界面。
播放界面
4、按下鍵盤上的F12鍵,在網頁的右側(或者下方)會彈出網頁代碼窗口,在其中找到第一個src代碼,如下圖所示,將src="" 雙引號內的鏈接復制下來。
Ps:在雙引號內雙擊即可選中引號內的鏈接。
代碼
5、新建一個網頁,在地址欄中粘貼剛才復制的鏈接并回車,將會打開一個黑色底面的播放窗口。
新建網頁
6、點擊此窗口播放進度條右側下載按鈕(豎3點),彈出一個下載文件的對話框,重新命名并選擇保存的位置后,點擊下載即可。
下載
下載后的文件的擴展名為.m4a,如果你需要把文件轉換為mp3格式,可以參考以下步驟。
1、啟動QQ音樂客戶端,選擇程序右上角的主菜單,在彈出的子菜單中選擇“音頻轉碼”。
2、在彈出的音頻轉碼對話框中,選擇“添加歌曲”,然后設置好轉換文件的保存位置后,點擊“開始轉換”按鈕對歌曲進行轉換。
3 等待轉換完成后,就會得到.MP3格式的文件了。
這個方法有一定的局限性,它只適用于能在網頁上播放的歌曲,部分歌曲會提示“僅限客戶端播放”,這時就只能打開客戶端在線播放了^_^
僅限客戶端播放
以上就是“免費下載QQ音樂中的付費音樂”的全部內容了,如果你覺得對你有幫助的話還請多多點贊,收藏和轉發,謝謝!
.前言
QQ音樂官網:點擊訪問
作者成品效果預覽:點擊訪問
作者其他博客成品匯總預覽:點擊訪問
暫時源碼并沒有提供其他獲取渠道,私聊作者獲取即可,或通過博客后面名片添加作者,很簡單!
二.主要功能點列表
頂級菜單
二級菜單
歌單推薦
新歌首發
精彩推薦
新碟首發
排行榜
MV
通用網站底部(版權、企業信息等)
三.產品效果圖
1.切換頂級菜單、二級菜單:
2.歌單推薦(菜單切換+輪播):
3.新歌首發(菜單切換+輪播):
4.精彩推薦(輪播):
5.新碟首發(菜單切換+輪播):
6.排行榜(背景圖裁剪實現:background-position屬性):
7.MV(菜單切換+輪播):
項目目錄截圖:
img存放各種靜態圖片資源等;
page目錄是通用目錄文件(看名稱幾乎也能明白了),top就是網站通用頂部,index就是框架通用主體盒子,foot就是網站通用底部;
router就是路由;
views其他功能目錄文件,子目錄home目錄為首頁,其他子目錄功能待開發實現;
components為組件存放目錄,子目錄home專門存放首頁組件頁面(歌單推薦、新歌首發、精彩推薦。。mv等),所以首頁已經被拆分成各個子頁面,非常美觀和利于后續功能拓展或修改
首頁主頁面 views/home/index.vue,通過引入子頁面組件:
<template>
<div style="font-size: 14px;">
<song-sheet-recommend></song-sheet-recommend>
<new-song-first></new-song-first>
<hot-recommend></hot-recommend>
<new-dish-first></new-dish-first>
<ranking-list></ranking-list>
<mv></mv>
</div>
</template>
<script>
import songSheetRecommend from "../../components/home/song_sheet_recommend.vue";
import newSongFirst from "../../components/home/new_song_first.vue";
import hotRecommend from "../../components/home/hot_recommend.vue";
import newDishFirst from "../../components/home/new_dish_first.vue";
import rankingList from "../../components/home/ranking_list.vue";
import mv from "../../components/home/mv.vue";
export default {
components: {
songSheetRecommend,
newSongFirst,
hotRecommend,
newDishFirst,
rankingList,
mv
},
data() {
return {
};
},
mounted() {
},
methods: {
}
};
</script>
<style>
</style>
歌單推薦(首頁其中子頁面之一),菜單切換,模擬數據交互,types1和types2賦值給types:
<template>
<div class="mod_bg" style="font-size: 14px;">
<div style="margin: 0 10%;">
<div class="mod_title">
歌單推薦
</div>
<div class="mod_small_title">
<span v-for="(item,index) in submenus" :key="index" :class="subMenuIndex!==index?'sub-menu-hover':''" @click="selSubMenu(index)" :style="'padding: 10px 30px;'+(subMenuIndex===index?'color: #31c27c;':'')">
{{item.name}}
</span>
</div>
<div>
<el-carousel trigger="click" :autoplay="false" height="350px">
<el-carousel-item v-for="i in 4" :key="i" indicator-position="outside">
<div style="margin: 0 10%;" class="recommend-box">
<div class="recommend-item" v-for="(item,index) in types" :key="index">
<div class="play-item">
<div style="text-align: center;height: 224px;overflow: hidden;">
<el-image :src="item.img" fit="cover" style="width: 100%;height: 224px;" class="cover"></el-image>
</div>
<div class="play-box">
<img src="../../../public/img/cover_play.png">
</div>
</div>
<div class="recommend-item-title title-active">
{{item.name}}
</div>
<div class="recommend-item-des">
播放量:{{item.playNum}}
</div>
</div>
</div>
</el-carousel-item>
</el-carousel>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
subMenuIndex: 0,
submenus: [
{name:'為你推薦'},
{name:'經典'},
{name:'網絡歌曲'},
{name:'韓語'},
{name:'官方歌單'},
{name:'情歌'},
],
types:[],
types1:[
{name:'二哥抖音最火',playNum:'4357.9萬',img:require('../../../public/img/recommend1.jpg')},
{name:'華語天花板:奏響青春的時代樂章',playNum:'1190.5萬',img:require('../../../public/img/recommend2.jpg')},
{name:'冬季限定 ·冰雪世界專屬電音BGM',playNum:'4.3萬',img:require('../../../public/img/recommend3.jpg')},
{name:'車載DJ熱歌:輕松一路Fun肆嗨!',playNum:'4534.6萬',img:require('../../../public/img/recommend4.jpg')},
{name:'愛的故事翻篇,被愛的人不用道歉',playNum:'2037.3萬',img:require('../../../public/img/recommend5.jpg')}
],
types2:[
{name:'不為人知的天才,老一輩香港音樂人',playNum:'51.5萬',img:require('../../../public/img/recommend6.jpg')},
{name:'以漂亮的姿勢,穿越到八十年代',playNum:'87.5萬',img:require('../../../public/img/recommend7.jpg')},
{name:'「經典粵語」唱著你我的悲歡離合',playNum:'123.3萬',img:require('../../../public/img/recommend8.jpg')},
{name:'重溫一把當年的火,粵語經典',playNum:'104.9萬',img:require('../../../public/img/recommend9.jpg')},
{name:'有一種歌詞,叫小美',playNum:'315.7萬',img:require('../../../public/img/recommend10.jpg')}
]
};
},
mounted() {
this.types=this.types1;
},
methods: {
selSubMenu(index){//切換菜單
this.subMenuIndex=index;
console.info(index % 2);
if(index % 2===0){
this.types=this.types1;
}else{
this.types=this.types2;
}
},
}
};
</script>
<style>
.mod_bg {
background: url("../../../public/img/bg_detail.jpg") 50% 0 repeat-x;
/*background: linear-gradient(to bottom, #FFFFFF,#FFFFFF,#FFFFFF, #eeeeee);*/
}
.mod_bg .el-carousel__button{
background-color: #67e56d !important;
}
.mod_title{
height: 40px;
line-height: 40px;
font-size: 28px;
font-weight: bolder;
color: #3a3a3a;
text-align: center;
padding: 50px 0 24px 0;
letter-spacing:10px;
}
.mod_small_title{
text-align: center;
height: 50px;
line-height: 50px;
font-size: 15px;
}
.recommend-box{
display: flex;
}
.recommend-item{
width: calc(20% - 0px);
margin: 10px 10px 10px 10px;
cursor: pointer;
}
.recommend-item:first-of-type{
margin: 10px 10px 10px 0!important;
}
.recommend-item:last-of-type{
margin: 10px 0 10px 10px!important;
}
.recommend-item-title{
height: 22px;
line-height: 22px;
overflow: hidden;
text-overflow: ellipsis;
margin-top: 15px;
}
.title-active:hover{
cursor: pointer;
color: #31c27c;
}
.recommend-item-des{
color: #999;
}
.play-box{
opacity: 0;
position: relative;
text-align: center;
height: 224px;
overflow: hidden;
margin-top: -224px;
background-color: rgba(161, 161, 161, 0.5);
}
.play-box img{
width: 25px;
height: 25px;
margin-top: 87px;
}
.play-item:hover .cover{
transition: transform 1s ease 0s;
transform: scale(1.1);
}
.play-item:hover .play-box{
opacity: 1;
}
.play-item:hover .play-box img{
transition: transform 0.5s ease 0s;
transform: scale(2);
}
</style>
以QQ音樂官方網站作為參考,模擬實現,實現最終的效果還是滿意的,樣式交互等也是最大化模擬官方的,后續再不斷完善、增加其他功能和其他頁面。
需要源碼:點贊 + 關注 + 留言 + 私信
覺得不錯的點個贊,如有建議的請留言,非常感謝!
如需幫助,私聊作者即可!再次感謝~
本文對使用到的技術僅做簡單的介紹,若想了解更多,請前往相應的官網網站進行學習。
本文適合對爬蟲相關知識接觸不多的新手,主要是普及Selenium如何做爬蟲,大佬請跳過。
pip install Selenium
from selenium import webdriver
driver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
如果看到開啟了一個瀏覽器窗口就是成功了,否則下面會有相應的報錯信息,需要檢查前面的步驟。
1.元素定位方式:
分享快速定位元素的小妙招:看所需信息所在的標簽的id,class,name的名稱是否與標簽下信息的語義有關,一般有關的都代表是唯一的。(從開發者的角度去思考)若無法通過當前標簽唯一定位,則考慮父級標簽,一次類推,總是能找到定位的方法的。
2.鼠標事件(模擬鼠標操作)
3.鍵盤事件(模擬鍵盤操作)
4.其他操作
使用csv庫,將爬取到的數據寫入到csv文件中進行持久化。
from selenium import webdriver
import csv
from time import sleep
import time
#
# Author : ATFWUS
# Date : 2021-03-21 20:00
# Version : 1.0
# 爬取周杰倫最熱門五首歌曲的基本信息,歌詞,前五百條熱門評論
# 此代碼僅供交流學習使用
#
#1.創建Chrome瀏覽器對象,這會在電腦上在打開一個瀏覽器窗口
driver=webdriver.Chrome(executable_path="C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
#2.打開QQ音樂 -周杰倫頁面
driver.get("https://y.qq.com/n/yqq/singer/0025NhlN2yWrP4.html")
#3.配置
csv_file=open('songs.csv','w',newline='',encoding='utf-8')
writer=csv.writer(csv_file)
start=time.time()
# 取前5首歌曲
song_numer=5
song_url_list=[]
song_resourses=[]
songlist__item=driver.find_elements_by_class_name("songlist__item")
# 獲取所有歌曲url
for song in songlist__item:
song__url=song.find_element_by_class_name("js_song").get_attribute("href")
song_url_list.append(song__url)
song_numer-=1
if(song_numer==0):
break
# print(song_url_list)
print("已獲取周杰倫熱門歌曲列表前五首的url")
print()
# 獲取一首歌曲所需要的信息
def getSongResourse(url):
song_resourse={}
driver.get(url)
# 這個0.5秒用于等待異步請求的完成
sleep(0.8)
# 獲取歌曲名
song_name=driver.find_element_by_class_name("data__name_txt").text
print("開始獲取歌曲《"+song_name+"》的基本信息")
# 獲取流派,發行時間,評論數
song_liupai=driver.find_element_by_css_selector(".js_genre").text[3:]
song_time=driver.find_element_by_css_selector(".js_public_time").text[5:]
song_comment_num=driver.find_element_by_css_selector(".js_into_comment").text[3:-1]
print("歌曲《" + song_name + "》基本信息獲取完畢")
print("開始獲取歌曲《" + song_name + "》的歌詞")
# 點擊展開歌詞
driver.find_element_by_partial_link_text("[展開]").click()
sleep(0.3)
lyic=""
# 獲取拼接歌詞
lyic_box=driver.find_element_by_id("lrc_content").find_elements_by_tag_name("p")
for l in lyic_box:
if l.text!="":
lyic+=l.text+"\n"
print("歌曲《" + song_name + "》的歌詞獲取完畢")
print("開始獲取歌曲《" + song_name + "》的第1-15條熱門評論")
# 獲取500條評論
comments=[]
# 點擊加載更多29次,每次多出15條評論
for i in range(33):
driver.find_element_by_partial_link_text("點擊加載更多").click()
print("開始獲取歌曲《" + song_name + "》的第"+str((i+1)*15+1)+"-"+str((i+2)*15)+"條熱門評論")
sleep(0.5)
comments_list=driver.find_element_by_css_selector(".js_hot_list").find_elements_by_tag_name("li")
for com in comments_list:
content=com.find_element_by_css_selector(".js_hot_text").text
content_time=com.find_element_by_css_selector(".comment__date").text
zan_num=com.find_element_by_class_name("js_praise_num").text
comment={}
comment.update({"評論內容":content})
comment.update({"評論時間":content_time})
comment.update({"評論點贊次數":zan_num})
comments.append(comment)
print("歌曲《" + song_name + "》的前五百條熱門評論獲取完畢")
print("歌曲《"+song_name+"》所有信息獲取完畢")
print()
song_resourse.update({"歌曲名":song_name})
song_resourse.update({"流派":song_liupai})
song_resourse.update({"發行時間":song_time})
song_resourse.update({"評論數":song_comment_num})
song_resourse.update({"歌詞":lyic})
song_resourse.update({"500條精彩評論":comments})
return song_resourse
for song_page in song_url_list:
song_resourses.append(getSongResourse(song_page))
# break
print("正在寫入CSV文件...")
for i in song_resourses:
writer.writerow([i["歌曲名"],i["流派"],i["發行時間"],i["評論數"],i["歌詞"]])
for j in i["500條精彩評論"]:
writer.writerow([j["評論內容"],j["評論時間"],j["評論點贊次數"]])
writer.writerow([])
csv_file.close()
end=time.time()
print("爬取完成,總耗時"+str(end-start)+"秒")
pip install padas
import pandas as pd
import csv
# 這五個列表用于創建Series
se=[]
names=[]
# 先讀取CSV文件的內容至內存中
with open("songs.csv",'r',encoding="utf8") as f:
# 創建閱讀器對象
reader=csv.reader(f)
rows=[row for row in reader]
index=0
print("開始解析CSV數據...")
for i in range(5):
s1=[]
# 讀取第一行信息
names.append(rows[index].__str__().split(',')[0][2:-1])
index+=1
# 讀取五百條評論的點贊消息
for j in range(510):
s1.append(int(rows[index].__str__().split(',')[2][2:-2]))
index+=1
se.append(s1)
# 讀取掉空行
index+=1
print("CSV數據解析成功\n")
# 創建的5個series
for i in range(5):
series=pd.Series(se[i])
print("歌曲《"+names[i]+"》的平均點贊次數是:" + str(series.mean()))
print("歌曲《" + names[i] + "》的標準差是:" + str(series.std()))
print()
感嘆:爬下幾千條評論,看了之后,發現,有傷感那味了,哈哈哈
作者:ATFWUS
原文鏈接:https://blog.csdn.net/ATFWUS/article/details/115053245
*請認真填寫需求信息,我們會在24小時內與您取得聯系。