再也不怕深夜emo的时候没会员了,无敌Python只需20行代码,轻松爬取网易云排行榜热门音乐!

再也不怕深夜emo的时候没会员了,无敌Python只需20行代码,轻松爬取网易云排行榜热门音乐!

让我们直接开始本次操作吧!

import random
import time
import execjs
import requests
import re
"""发送请求: 模拟浏览器对于url地址发送请求"""
# 模拟浏览器
headers = {
    'User-Agent':'*******” (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}
# 请求网址: 热歌榜链接
link = 'https://********/discover/toplist?id=3778678'
# 获取数据
html = requests.get(url=link, headers=headers).text
# 使用正则提取歌曲ID 歌名
info = re.findall('<a href="/song\?id=(\d+)">(.*?)</a>', html)
# for循环遍历
for music_id, title in info:
    # time.sleep(random.randint(1,2))
    # 替换特殊字符
    new_title = re.sub(r'[\\/:*?"<>|]', '', title)
    print(music_id, title)
    # 请求网址
    url = 'https://com/weapi/song/enhance/player/url/v1?csrf_token='
    # 读取js代码
    js_file = open('网易.js', encoding='utf-8').read()
    # 编译js代码
    js_code = execjs.compile(js_file)
    # 参数
    a = {
        "ids": f"[{music_id}]",
        "level": "standard",
        "encodeType": "aac",
        "csrf_token": ""
    }
   
完整源码加v Python1018 备注{ 圆圆 } 获取 不备注不通过验证哦
 
 # 调用js代码函数
    resp = js_code.call('get_data', a)
    print(resp)
    # 请求参数 (需要通过调用js代码获取)
    data = {
        'params':resp['encText'],
        'encSecKey':resp['encSecKey'],
    }
    # 发送请求
    response = requests.post(url=url, data=data, headers=headers)
    """获取响应json数据"""
    json_data = response.json()
    """解析数据: 提取歌曲链接"""
    music_url = json_data['data'][0]['url']
    """保存数据: 获取歌曲内容, 进行数据保存"""
    # 获取歌曲内容
    music_content = requests.get(url=music_url, headers=headers).content
    # 保存数据
    with open('music\\' + title + '.mp3', mode='wb') as f:
        # 写入数据
        f.write(music_content)
    print(music_url)

大家快去试一下吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值