马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 itzyx 于 2024-10-17 08:35 编辑
萌新一枚,学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)
|