python爬取网易云音乐_我用Python爬取了网易云音乐

原标题:我用Python爬取了网易云音乐 来源:别动我的猫尾巴

headers需要进行修改,headers设置不对会被屏蔽导致爬取不成功。一个headers用久了也会爬取不成功

代码如下:

import os

from lxml import etreeimport requests

# 设置头部信息,防止被检测出是爬虫headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36'}url = "https://music.163.com/discover/toplist?id=3778678"base_url = 'http://music.163.com/song/media/outer/url?id='# 新建一个字典用于存储最终所需要的数据d = dict()re = requests.get(url=url, headers=headers).text# 构造了一个XPath解析对象并对HTML文本进行自动修正html = etree.HTML(re)# XPath使用路径表达式来选取x = html.xpath('//a[contains(@href,"/song?")]')

# 对取到的数据进行筛选for data in x: # 获取到音乐url href = data.xpath('./@href')[0] id = href.split("=")[1] href = base_url + "%s.mp3" % id # 添加到字典 if "$" not in id: # 获得到标签内的文本(即音乐的名称) name = data.xpath('./text()')[0] d[href] = namefor i in d: # 文件夹不存在,则创建文件夹 save_path = './music' folder = os.path.exists(save_path) if not folder: os.makedirs(save_path) # 下载音乐到当前目录的music文件夹下 get = requests.get(base_url + '%s.mp3' % i, headers=headers).content with open('./music/%s.mp3' % d[i], "wb") as f: print("正在下载歌曲 《%s》 ..." % d[i]) f.write(get)

效果如下:

590d-iuvaazp2268509.png

4510-iuvaazp2268508.png

求关注求赞求转发,你的支持是我最大的动力!我们下期见

343233024.png

海量资讯、精准解读,尽在新浪财经APP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值