鱼C论坛

 找回密码
 立即注册
查看: 2118|回复: 2

[作品展示] 简单代码,爬取网易云热歌榜所有歌曲 ,一看就会!

[复制链接]
发表于 2023-5-17 21:18:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
萌新一枚,学python 也才几个月,最近刚接触到大名鼎鼎的爬虫,刚学习就陷入其中无法自拔,爬小说,爬图片,爬音乐等等~,今天就以爬取网易云热歌榜所有歌曲为例,发个帖子,纪念一下自己的学习成果,希望大佬亲喷哈!
import requests
from bs4 import BeautifulSoup

# 设置请求头,模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.35'}

# 发送 GET 请求,并获取响应内容
url = 'https://music.163.com/discover/toplist?id=3778678'
response = requests.get(url, headers=headers)
# 设置响应内容编码
response.encoding = response.apparent_encoding

# 使用 BeautifulSoup 解析响应内容
soup = BeautifulSoup(response.text, 'html.parser')
# 获取歌曲列表
song_list = soup.find('ul', {'class': 'f-hide'}).find_all('a')
# 获取歌曲名称列表
name_list = []
for song_name in song_list:
    name_list.append(song_name.string)
# 获取歌曲 ID 列表
song_ids = [song['href'].split('=')[1] for song in song_list]

# 下载歌曲并保存到本地
for song in range(len(song_ids)):
    # 构造歌曲下载链接
    url2 = f'http://music.163.com/song/media/outer/url?id={song_ids[song]}.mp3'
    # 发送 GET 请求,获取响应内容
    response = requests.get(url2, headers=headers).content
    # 将响应内容写入文件
    with open(f'{name_list[song]}.mp3', 'wb') as f:
        f.write(response)

爬取歌曲

爬取歌曲

评分

参与人数 1荣誉 +5 贡献 +3 收起 理由
歌者文明清理员 + 5 + 3 感谢楼主无私奉献!

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-17 22:47:25 | 显示全部楼层
非常好!我支持你!
另外提一些醒,当时我就是因为这个绊脚石被绊倒的(动态渲染),requests 爬取到的并不是 F12,而是 Ctrl+U
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-18 08:57:31 | 显示全部楼层
歌者文明清理员 发表于 2023-5-17 22:47
非常好!我支持你!
另外提一些醒,当时我就是因为这个绊脚石被绊倒的(动态渲染),requests 爬取到的并 ...

好的  非常感谢大佬指点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-23 05:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表