itzyx 发表于 2023-5-17 21:18:24

简单代码,爬取网易云热歌榜所有歌曲 ,一看就会!

本帖最后由 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 = .split('=') 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}.mp3'
    # 发送 GET 请求,获取响应内容
    response = requests.get(url2, headers=headers).content
    # 将响应内容写入文件
    with open(f'{name_list}.mp3', 'wb') as f:
      f.write(response)


歌者文明清理员 发表于 2023-5-17 22:47:25

非常好!我支持你!
另外提一些醒,当时我就是因为这个绊脚石被绊倒的(动态渲染),requests 爬取到的并不是 F12,而是 Ctrl+U

itzyx 发表于 2023-5-18 08:57:31

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

好的非常感谢大佬指点

chenyiqi12138 发表于 2024-10-16 18:32:32

现在网易云好像加密了,是不是爬不到了呀?

itzyx 发表于 2024-10-17 08:34:36

chenyiqi12138 发表于 2024-10-16 18:32
现在网易云好像加密了,是不是爬不到了呀?

没有啊,我前段时间还试了,可以的

chenyiqi12138 发表于 2024-10-17 12:45:28

itzyx 发表于 2024-10-17 08:34
没有啊,我前段时间还试了,可以的

试了下确实可以,向大佬学习{:10_265:}
页: [1]
查看完整版本: 简单代码,爬取网易云热歌榜所有歌曲 ,一看就会!