最近疫情原因床佳,我們公司比較“人性化”滋早,在疫情剛剛爆發(fā)之后,我就逃離了毒圈砌们,然后在家辦公杆麸,但是搁进,相對在公司的時候,清閑了太多昔头,又不知道去哪里玩饼问,于是,就在家辦個‘補習(xí)班‘揭斧,教家里的小孩學(xué)編程莱革,其中,python爬蟲就成為我教他們內(nèi)容的首選項讹开,今天也開源一個小代碼盅视,實現(xiàn)vip音樂的獲取
大家可以自己去下載玩一下
至于詳細(xì)的爬蟲實現(xiàn)原理,我在之前的文章中進行過詳細(xì)的講解旦万,大家可以看一下:
五步帶你探究爬蟲爬取視頻彈幕背后的真相左冬,附爬蟲實現(xiàn)源碼
好了,話不多說纸型,上代碼:
開發(fā)工具:pycharm
開發(fā)環(huán)境:python3.8.5
#通過一個網(wǎng)站 拿他的數(shù)據(jù)
#爬蟲的核心步驟 => 獲取url 接受響應(yīng)(發(fā)送請求) 篩選數(shù)據(jù) 保存本地
#代碼前面寫上本次案例需要用到的擴展包(模塊)
import requests #python代碼模擬瀏覽器發(fā)送網(wǎng)絡(luò)請求
import json #做json處理
def main():
#你們想要獲取哪個歌手的歌
geshou = str(input('請輸入指定歌手的名稱: '))
# print(geshou)
#獲取多少個頁面的歌
yeshu = int(input('請輸入指定頁數(shù): '))
#0-yeshu
#1-yeshu+1
for i in range(1,yeshu+1):
url = "http://www.kuwo.cn/api/www/search/searchMusicBykeyWord?key={}&pn={}&rn=30&httpsStatus=1&reqId=00f6f9b0-572e-11eb-acc3-fbf111a8d0de".format(geshou,i)
#偽裝瀏覽器
headers = {
#鍵值對的方式 瀏覽器的類型
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36",
"Referer": "http://www.kuwo.cn/search/list?key=%E5%91%A8%E6%9D%B0%E4%BC%A6",
"csrf": "HTJJKH4VAQ",
"Cookie":"_ga=GA1.2.1345614870.1610439929; Hm_lvt_cdb524f42f0ce19b169a8071123a4797=1610439929,1610687692; _gid=GA1.2.1361641767.1610687692; Hm_lpvt_cdb524f42f0ce19b169a8071123a4797=1610714039; _gat=1; kw_token=HTJJKH4VAQ"
}
#發(fā)送請求
res = requests.get(url,headers=headers)
# print(res.text)
html = res.text
jsons = json.loads(html)
# print(jsons)
data = jsons['data']['list']
# print(data)
for i in data:
#音樂名字
name = i['name']
# 音樂ID
rid = i['rid']
# 后臺頁面拿到指定歌手歌曲的音樂路徑
url = "http://www.kuwo.cn/url?format=mp3&rid={}&response=url&type=convert_url3&br=128kmp3&from=web&t=1610714066130&httpsStatus=1&reqId=00f83230-572e-11eb-acc3-fbf111a8d0de".format(rid)
result = requests.get(url, headers=headers).json()
# print(result.text)
music_url = result['url']
# print(music_url)
#下載
with open(r'C:\Users\SunComputer\Desktop\VIP音樂/{}.mp3'.format(name),'wb')as f:
print('正在下載{}'.format(name), end='')
music = requests.get(music_url)
f.write(music.content)
print('\t下載完畢')
main()
</pre>
剛剛接觸python的小伙伴,可以每獲取一步數(shù)據(jù)就打印一次梅忌,這樣可能對于你的理解有一定的幫助
碼云中我已經(jīng)上傳了一些Java相關(guān)得學(xué)習(xí)代碼狰腌,包括Java基礎(chǔ)、微服務(wù)框架牧氮,多線程實現(xiàn)案例等琼腔,大家可以自行下載
Java:源碼分享地址
python:源碼分享地址
是客戶的附件是