网易云音乐榜单爬取
打开网易云音乐,进入飙升榜
进入到开发者工具页面,搜索列表页歌曲名称,查看请求地址
模拟浏览器发出请求,查看响应内容
import requests url = 'https://music.163.com/discover/toplist?id=19723756' headers = { 'User-Agent':'ozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36' } response = requests.get(url=url, headers=headers) print(response.text)
响应结果:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...... <title>飙升榜 - 排行榜 - 网易云音乐</title> ...... <div class="u-title u-title-1 f-cb"><h3><span class="f-ff2">歌曲列表</span></h3><span class="sub s-fc3"><span>100</span>首歌</span><div class="more s-fc3">播放:<strong class="s-fc6" id="play-count">5967535104</strong>次</div></div> <div id="song-list-pre-cache" data-key="song_toplist-19723756" data-simple="0" data-pvnamed="0"> <div class="u-load s-fc4"><i class="icn"></i> 加载中...</div> <ul class="f-hide"><li><a href="/song?id=2164852326">GoneBad(PHONK)</a></li><li><a href="/song?id=2151853884">我会好好的 (Live版)</a></li><li><a href="/song?id=1868810493">Anyone(80's Version)</a></li><li><a href="/song?id=2166485338">喜帖街</a></li><li><a href="/song?id=70713">Love U 2</a></li><li><a href="/song?id=2166087862">河</a></li><li><a href="/song?id=2165610149">Jar Of Love</a></li><li><a href="/song?id=2166118123">妥协 (Live版)</a></li><li><a href="/song?id=2145896224">当路灯断了电</a></li><li><a href="/song?id=2163953992">是想你的声音啊2024</a></li><li><a href="/song?id=2164313909">我们不给草</a></li><li><a href="/song?id=32737469">LoveU2</a></li><li><a href="/song?id=2063210044">I Walk This Earth All By Myself</a></li><li><a href="/song?id=2133568636">Fast Cars & Superstars (Extended)</a></li><li><a href="/song?id=1803913957">Trippin</a></li><li><a href="/song?id=2600259312">最小的房间</a></li><li><a href="/song?id=2165544251">月下</a></li><li><a href="/song?id=2599542235">网恋</a></li><li><a href="/song?id=2166067707">下雨天</a></li><li><a href="/song?id=2145152864">宝莲</a></li><li><a href="/song?id=1397248051">Just Friends</a></li><li><a href="/song?id=2100671888">放纵</a></li><li><a href="/song?id=2120974013">不得不爱</a></li><li><a href="/song?id=139764">不得不爱</a></li><li><a href="/song?id=2102493822">Moth</a></li><li><a href="/song?id=2164832581">能不能让我回到最初的记忆</a></li><li><a href="/song?id=2166486002">野风筝</a></li><li><a href="/song?id=2599615008">III(当遗书只能写两个字)</a></li><li><a href="/song?id=3956911">Duvet</a></li><li><a href="/song?id=2086327879">鲜花</a></li><li><a href="/song?id=2166118105">连名带姓 (Live版)</a></li><li><a href="/song?id=2156757027">you don’t get</a></li><li><a href="/song?id=2599557067">回 忆 凌 迟</a></li><li><a href="/song?id=2159189900">If You Want</a></li><li><a href="/song?id=2600218510">霞</a></li><li><a href="/song?id=2159142475">Mood</a></li><li><a href="/song?id=2141105706">无名的人</a></li><li><a href="/song?id=2139634085">Butcher Vanity (feat. Jamie Paige & ricedeity)</a></li><li><a href="/song?id=2162980501">EMO</a></li><li><a href="/song?id=2130949397">紧急应变逃生法</a></li><li><a href="/song?id=109995">离人</a></li><li><a href="/song?id=2154224380">Million Dollar Baby (Freestyle)</a></li><li><a href="/song?id=2600223535">CHINA-溯</a></li><li><a href="/song?id=2167072459">37.2万亿次被爱</a></li><li><a href="/song?id=1968316652">Wasted (Nightcore) [Bass Boosted] (feat. harmony haven)</a></li><li><a href="/song?id=522429778">Never Enough</a></li><li><a href="/song?id=209586">妥协</a></li><li><a href="/song?id=2156522597">阳光下的星星</a></li><li><a href="/song?id=2163888616">一百万个可能(在一瞬间有100万个可能)</a></li><li><a href="/song?id=2154102422">天若有情 (Live版)</a></li><li><a href="/song?id=2129666437">你在 不在</a></li><li><a href="/song?id=2166118151">冬眠 (Live版)</a></li><li><a href="/song?id=2071452224">Take Me Hand</a></li><li><a href="/song?id=2166444455">Askitxamiz(还会有好处)</a></li><li><a href="/song?id=2163974497">瘦子 (Live版)</a></li><li><a href="/song?id=2165750615">瘦身男女</a></li><li><a href="/song?id=2014019634">假装快乐</a></li><li><a href="/song?id=2159389737">又在想你</a></li><li><a href="/song?id=2599522185">一罐爱</a></li><li><a href="/song?id=2149188052">Fast cars (2024 Radio Edit)</a></li><li><a href="/song?id=1351578882">One Thing</a></li><li><a href="/song?id=2161881997">留不住风雨</a></li><li><a href="/song?id=2134852913">Wish You Hell</a></li><li><a href="/song?id=2159184104">聊天记录越往上你越爱我( Shawty)</a></li><li><a href="/song?id=2148885579">unbreakable love</a></li><li><a href="/song?id=2600032102">Shu Shu</a></li><li><a href="/song?id=2163320621">红霞帔</a></li><li><a href="/song?id=19827042">Call You Tonight</a></li><li><a href="/song?id=2138969676">Is It Just Me?</a></li><li><a href="/song?id=2599500900">小气鬼</a></li><li><a href="/song?id=2153774529">The Last Wish (Radio Edit)</a></li><li><a href="/song?id=2165782373">等烟火的人</a></li><li><a href="/song?id=2076195413">良爱苦口</a></li><li><a href="/song?id=2159130175">最初的记忆</a></li><li><a href="/song?id=2100630469">错位时空</a></li><li><a href="/song?id=25699092">迷宫</a></li><li><a href="/song?id=2159086461">Qing hua</a></li><li><a href="/song?id=2599632687">人选</a></li><li><a href="/song?id=2161577189">毕业典礼</a></li><li><a href="/song?id=1917046317">Just Friends</a></li><li><a href="/song?id=2158936855">月並みに輝け</a></li><li><a href="/song?id=2165498251">渊</a></li><li><a href="/song?id=2600258168">辗转年华</a></li><li><a href="/song?id=1807860447">Mind On You</a></li><li><a href="/song?id=2164765878">有谁懂我的难过</a></li><li><a href="/song?id=5100462">Dilemma</a></li><li><a href="/song?id=2022954257">银河守望</a></li><li><a href="/song?id=2075804849">Mistletoe</a></li><li><a href="/song?id=2148826386">路上的光</a> ...... </html>
使用正则表达式提取音乐名称
import re html_data = re.findall('<li><a href="/song\?id=(\d+)">(.*?)</a>', response.text)
for song_id, title in html_data:
music_url = f'https://music.163.com/discover/toplist?id='
print(song_id, title)
运行结果:
2164852326 GoneBad(PHONK) 2151853884 我会好好的 (Live版) 1868810493 Anyone(80's Version) 2166485338 喜帖街 70713 Love U 2 2166087862 河 2165610149 Jar Of Love 2166118123 妥协 (Live版) 2145896224 当路灯断了电 2163953992 是想你的声音啊2024 2164313909 我们不给草 32737469 LoveU2 2063210044 I Walk This Earth All By Myself 2133568636 Fast Cars & Superstars (Extended) 1803913957 Trippin 2600259312 最小的房间 2165544251 月下 2599542235 网恋 2166067707 下雨天 2145152864 宝莲 1397248051 Just Friends 2100671888 放纵 2120974013 不得不爱 139764 不得不爱 2102493822 Moth 2164832581 能不能让我回到最初的记忆 2166486002 野风筝 2599615008 III(当遗书只能写两个字) 3956911 Duvet 2086327879 鲜花 2166118105 连名带姓 (Live版) 2156757027 you don’t get 2599557067 回 忆 凌 迟 2159189900 If You Want 2600218510 霞 2159142475 Mood 2141105706 无名的人 2139634085 Butcher Vanity (feat. Jamie Paige & ricedeity) 2162980501 EMO 2130949397 紧急应变逃生法 109995 离人 2154224380 Million Dollar Baby (Freestyle) 2600223535 CHINA-溯 2167072459 37.2万亿次被爱 1968316652 Wasted (Nightcore) [Bass Boosted] (feat. harmony haven) 522429778 Never Enough 209586 妥协 2156522597 阳光下的星星 2163888616 一百万个可能(在一瞬间有100万个可能) 2154102422 天若有情 (Live版) 2129666437 你在 不在 2166118151 冬眠 (Live版) 2071452224 Take Me Hand 2166444455 Askitxamiz(还会有好处) 2163974497 瘦子 (Live版) 2165750615 瘦身男女 2014019634 假装快乐 2159389737 又在想你 2599522185 一罐爱 2149188052 Fast cars (2024 Radio Edit) 1351578882 One Thing 2161881997 留不住风雨 2134852913 Wish You Hell 2159184104 聊天记录越往上你越爱我( Shawty) 2148885579 unbreakable love 2600032102 Shu Shu 2163320621 红霞帔 19827042 Call You Tonight 2138969676 Is It Just Me? 2599500900 小气鬼 2153774529 The Last Wish (Radio Edit) 2165782373 等烟火的人 2076195413 良爱苦口 2159130175 最初的记忆 2100630469 错位时空 25699092 迷宫 2159086461 Qing hua 2599632687 人选 2161577189 毕业典礼 1917046317 Just Friends 2158936855 月並みに輝け 2165498251 渊 2600258168 辗转年华 1807860447 Mind On You 2164765878 有谁懂我的难过 5100462 Dilemma 2022954257 银河守望 2075804849 Mistletoe 2148826386 路上的光 2119517202 Moshi Moshi (feat. 百足) 2091082528 沉溺(你让我的心不再结冰) 2599553566 我想你不知道我喜欢你 1469768565 你要如何,我们就如何 (Live) 2154333497 Luv(sic), pt3 2163646817 威士忌酸 2152487591 Sacred Play Secret Place雨声 2154832088 起卦 1498236566 Call Me Now (Rob Adans Remix) 2146006430 Range Rover 26117675 我的秘密
下载音乐
import os filename = 'music\\' if not os.path.exists(filename): os.makedirs(filename) response = requests.get(url=url, headers=headers) # print(response.text) html_data = re.findall('<li><a href="/song\?id=(\d+)">(.*?)</a>', response.text) for song_id, title in html_data: music_url = f'http://music.163.com/song/media/outer/url?id={song_id}.mp3' # 对于音乐地址发送请求,获取二进制数据 music_content = requests.get(music_url, headers=headers).content with open('music\\' + title + '.mp3', 'wb') as f: f.write(music_content) print(song_id, title)