前言 嗨嘍,大家好呀~這裡是愛看美女的茜茜吶 又到了學Python時刻~ 在面對想聽的歌沒得權時,正常人一般的操作是百度一下又或者直接找朋友借 但是程式員就不一樣了~直接展示一手如何用Python 實現通過輸入歌手名或歌名一秒下載 ~ 第三方庫: requests >>> pip install r ...
前言
嗨嘍,大家好呀~這裡是愛看美女的茜茜吶
又到了學Python時刻~
在面對想聽的歌沒得權時,正常人一般的操作是百度一下又或者直接找朋友借
但是程式員就不一樣了~直接展示一手如何用Python 實現通過輸入歌手名或歌名一秒下載 ~
第三方庫:
-
requests >>> pip install requests
-
prettytable >>> pip install PrettyTable
開發環境:
-
版 本: python 3.8
-
編輯器:pycharm 2021.2
如果安裝python第三方模塊:
-
win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
-
在pycharm中點擊Terminal(終端) 輸入安裝命令
如何配置pycharm裡面的python解釋器?
-
選擇file(文件) >>> setting(設置) >>> Project(項目) >>> python interpreter(python解釋器)
-
點擊齒輪, 選擇add
-
添加python安裝路徑
pycharm如何安裝插件?
-
選擇file(文件) >>> setting(設置) >>> Plugins(插件)
-
點擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
-
選擇相應的插件點擊 install(安裝) 即可
-
安裝成功之後 是會彈出 重啟pycharm的選項 點擊確定, 重啟即可生效
資料、軟體、教程加Q裙:261823976 點擊藍字免費獲取
分析思路(分析數據來源)
現搜索功能, 獲取到所有我們要下載的音樂
下載音樂的功能
實現代碼:
-
發送請求
-
獲取數據
-
解析數據 想要的內容提取出來
-
保存數據
原理:
模擬 客戶端 向 伺服器 發送請求
代碼
導入模塊
import requests # 第三方模塊 額外安裝的 import prettytable as pt # 第三方模塊 列印的內容 變好看
Python版本: 越新 新的功能也就越多 但是可能不穩定 3.9以上
太老了的版本 3.5 以下
key = input('搜索音樂/歌手:') rn = input('請輸入歌曲數量:') pn = input('請輸入頁碼:')
f 是往字元串裡面傳變數 類似於format
因為代碼里有鏈接,不給過的,所以我只能截個圖展示一下,你們可以根據下方圖片添加完整哦~
==或點擊 藍色字體 領取完整源碼,我都放在這裡了。==
加入偽裝,以防識別出不是瀏覽器
headers = { 'Cookie': '_ga=GA1.2.1545626940.1657202295; uname3=%u3002; t3kwid=168444131; userid=168444131; websid=1306648885; pic3="http://q.qlogo.cn/qqapp/100243533/92BBD7D4B7F9106BA10CBE2CD0A7FA92/100"; t3=qq; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1665230479; _gid=GA1.2.404923496.1665230479; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1665231228; kw_token=CVYN9V11H8C', 'csrf': 'CVYN9V11H8C',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' }
1. 發送請求
get/post
response = requests.get(url=url, headers=headers)
2. 獲取數據
json_data = response.json()
3. 解析數據
怎麼取?
字典 數據容器
存儲數據 快速的定位到數據位置
我可以通過:前面的內容快速定位到:後面的內容
data_list = json_data['data']['list'] tb = pt.PrettyTable() # 新建了一個表格 count = 0 # 定義一個序號 tb.field_names = ['序號', '歌曲名稱', '歌手名', '音樂鏈接'] info_list = [] # [{字典}, {}, {}, {}] for data in data_list: name = data['name'] artist = data['artist'] rid = data['rid']
print(rid, name, artist)
往表格裡面添加數據
代碼操作 大家 只可以用於學習, 切勿商用
music_url = requests.get(info_url).json()['data']['url'] tb.add_row([count, name, artist, music_url]) info_list.append([name, artist, music_url]) count += 1 print(tb)
# 死迴圈 while True: index = int(input("請輸入你要下載的歌曲序號(-1退出):")) if index == -1: break name = info_list[index][0] artist = info_list[index][1] music_url = info_list[index][2] # 音頻 / 視頻 / 圖片 二進位的形式 music_data = requests.get(music_url).content
4. 保存數據
with open(f'music/{name}-{artist}.mp3', mode='wb') as f: f.write(music_data) print(f'{name}-{artist} 下載成功!!!')
效果
我們可以通過輸入歌名或者歌手名來搜索
先試試Eason的,來個一頁,十首歌~
這時候要下載哪首直接就輸入對應序號即可
這裡我選擇了0號孤勇者
2首網抑雲是聽不了的,一首是VIP的
文章看不懂,我專門錄了對應的視頻講解,本文只是大致展示,完整代碼和視頻教程點擊下方藍字
==點擊 藍色字體 自取,我都放在這裡了。==