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

python写入mysql一次写入多个value_html

解析数据

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

python写入mysql一次写入多个value_爬虫_02

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

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

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

打印一下

python写入mysql一次写入多个value_python_03

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

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

如果想要获取所有的音乐

打开开发者工具

python写入mysql一次写入多个value_解析数据_04

python写入mysql一次写入多个value_python_05


刷新网页这样就能获得所有音乐了。

保存数据

注: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)

运行效果

看看打印输出的内容

python写入mysql一次写入多个value_爬虫_06

看看保存的文件

python写入mysql一次写入多个value_解析数据_07

结语

本次分享就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区留言