python爬虫基础(一次性爬多首音乐)

python爬虫基础(一次性爬多首音乐)


嗨!收到一张超级美丽的风景图,愿你每天都能顺心!

发送请求


#寻址
url = 'https://music.163.com/playlist?id=110759778'

#伪装
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}
#发送请求
res = requests.get(url,headers=headers)

#保存地址文本内容
html_data = res.text

在这里插入图片描述

解析数据

这里用到我们的内置模块正则表达式 import re(当然也可以用外置模块beautifulsoup解析数据)

在这里插入图片描述

很明显只有id和名字不一样
那么我们只需要获取到id和名字可以了
正则表达式只需要把我们想要获取的内容改成 .*?即可

music_info = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>',html_data)

注:问好前需要加\进行转意
findll表示寻找所有的这个表达式,从html_data中寻找

打印一下
在这里插入图片描述

可以看到我们的id和歌曲名已经返回,并返回了一个列表,可以通过索引只获取id或歌曲名。

注:由于网页版只显示10首音乐,所以只能获取到10首。

如果想要获取所有的音乐
打开开发者工具
在这里插入图片描述

在这里插入图片描述
刷新网页这样就能获得所有音乐了。

保存数据

注:http://music.163.com/media/outer/url?id=
这是网易云音乐播放的一个接口,只需要将id输入即可打开音乐。

for info in music_info:
    music_url = f'http://music.163.com/media/outer/url?id={info[0]}'
    打印歌曲名和地址来查看进度。
    print(info[1],music_url)
    # 将名字中可能出现影响的字符转为空
    title = re.sub('[\\/:*?<>|]','',info[1])
    # 获取音乐二进制文件
    music_data = requests.get(music_url).content
    with open(f'{title}.mp3','wb') as f:
        f.write(music_data)

总代码

import requests #导库
import re #正则 

url = 'https://music.163.com/playlist?id=110759778'
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36'
}
res = requests.get(url,headers=headers)
html_data = res.text
music_info = re.findall('<li><a href="/song\?id=(.*?)">(.*?)</a></li>',html_data)

# 保存数据
for info in music_info:
    music_url = f'http://music.163.com/media/outer/url?id={info[0]}'
    print(info[1],music_url)
    title = re.sub('[\\/:*?<>|]','',info[1])
    music_data = requests.get(music_url).content
    with open(f'{title}.mp3','wb') as f:
        f.write(music_data)

运行效果

看看打印输出的内容
在这里插入图片描述

看看保存的文件
在这里插入图片描述

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言,如果给小伙伴们带来了一些收获,请留下你的小赞,你的点赞和关注将会成为博主分享每日学习的动力。

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python爬虫可以细分为多个方面,其中包括但不限于以下几个方面: 1. 网络请求库:Python爬虫的第一步是发送网络请求获取网页内容,常用的网络请求库包括urllib、requests等。\[1\] 2. 解析库:获取到网页内容后,需要使用解析库来提取所需的数据。常用的解析库有BeautifulSoup、lxml等。 3. 数据存储:取到的数据需要进行存储,可以选择将数据保存到本地文件、数据库或者其他存储介质中。 4. 动态网页取:对于使用JavaScript动态生成内容的网页,需要使用Selenium等工具来模拟浏览器行为进行取。 5. 反爬虫策略:为了防止被网站屏蔽或限制访问,爬虫需要应对反爬虫策略,例如设置请求头、使用代理IP等。 6. 数据清洗与分析:取到的数据可能存在噪音或者需要进行进一步的处理和分析,可以使用正则表达式、pandas等工具进行数据清洗和分析。 以上是Python爬虫的一些细分方面,根据具体需求和项目要求,可以选择相应的技术和工具进行开发。 #### 引用[.reference_title] - *1* *3* [六万字带你一次性速通python爬虫基础](https://blog.csdn.net/qq_52736131/article/details/123251138)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python爬虫入门2:HTML知识简介](https://blog.csdn.net/LaoYuanPython/article/details/113031157)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值