Python 爬虫:手把手教你爬取某云热歌榜歌曲
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!👉。
爬虫(Web Crawler)是一种自动化程序,用于遍历互联网上的网页并收集数据。它们的基本原理可以概括为以下几个关键步骤:
- 发送请求:
- 爬虫首先向目标网站的服务器发送HTTP请求。这些请求可以是GET请求或POST请求,具体取决于需要访问的资源类型和服务器要求。
- 接收响应:
- 服务器接收到请求后,会返回一个HTTP响应。这个响应中包含了请求的网页内容,通常是HTML文档,但也可能是JSON、XML或其他格式的数据。
- 解析内容:
- 爬虫接收到网页内容后,需要使用解析器(如BeautifulSoup、lxml、pyquery等)来解析HTML文档,提取出所需的信息。解析过程可能包括查找特定的标签、属性或文本内容。
- 存储数据:
- 提取出的数据可以存储在本地文件系统(如CSV、JSON、数据库文件等)或远程数据库中。存储方式的选择取决于数据的类型和规模,以及后续的数据处理需求。
- 链接提取与遍历:
- 在解析网页时,爬虫还会提取出页面中的其他链接(通常是<a>标签的href属性)。这些链接会被加入到一个待爬取的URL队列中,以便后续继续遍历。
- 为了避免陷入无限循环或重复爬取,爬虫通常会使用一个去重机制(如集合、布隆过滤器等)来跟踪已经访问过的URL。
- 遵守规则与礼仪:
- 爬虫在爬取网站时,需要遵守网站的robots.txt文件规定。robots.txt文件是一个由网站管理员创建的文本文件,用于指示搜索引擎爬虫哪些页面可以访问,哪些页面不能访问。
- 此外,爬虫还应该合理设置请求频率(如使用延迟机制),以避免对目标网站服务器造成过大的负载。
- 处理异常与错误:
- 在爬取过程中,爬虫可能会遇到各种异常和错误(如网络超时、404错误、500错误等)。因此,爬虫需要具备处理这些异常和错误的能力,以确保爬取过程的稳定性和可靠性。
- 更新与维护:
- 随着互联网的发展和网站结构的变化,爬虫需要不断更新和维护以适应新的变化。这可能包括更新解析规则、调整请求频率、优化存储方式等。
CSDN大礼包:《2024年最新全套学习资料包》免费分享
Part1 进行网页分析
首先打开网易云的网页版网易云
然后搜索你喜欢的歌手,这里我就搜陈奕迅,右键选择检查
选择一首歌曲找到这个首歌曲的数字ID,并进行复制
在众多数据中准确的去找到这一串数字
在浏览器上粘贴接口并附上那一串ID,点击回车键
最后你就可以轻松的听完这首歌啦
现在我把那个url贴出来
https://m10.music.126.net/20200715163315/a075d787d191f6729a517527d6064f59/ymusic/0552/0f0e/530f/28d03e94478dcc3e0479de4b61d224e9.mp3
Part2 更高级的
看到这里,你可能会想,为啥根本没用selenium模块呢?能不能直接爬取任何一首我想要的歌,而不用每首都去费心费力的找一个url呢?当然可以哒!
其实网易云在线播放每首歌曲时,都有一个外链地址,这是不会变的,跟每首歌的唯一一个id绑定在一起,每首歌audio文件的url如下:
url = 'https://music.163.com/artist?id=3684'
id值的获取也很简单,播放列表,上方会出现对应的网址,那里有id值,如下图:
所以只需把上面程序中的url改成新的url即可
程序目标是下载当前页面中所有的歌曲。
通过接口下载: 接口链接 + 歌曲ID
for music_label in music_label_list:
# 从单个的音乐标签中筛选出ID信息
href = music_label.xpath('./@href')[0]
# print('href数据:', href)
# 从ID信息中切割出ID的数字值
music_id = href.split('=')[1]
# print('ID数据:', music_id)
# 判断字符串中是否是数字(如果是数字结果才为真)
if music_id.isdigit():
# 这是正确的歌曲ID
print('ID数据:', music_id)
# 提取出歌曲的名字
music_name = music_label.xpath('./text()')[0]
print('歌曲名字:', music_name)
# 定义请求歌曲的链接
music_url = 'http://music.163.com/song/media/outer/url?id=' + music_id
# 发送网络请求获取歌曲数据
response = requests.get(music_url, headers=headers)
# 将歌曲数据保存到mp3文件中
with open(f'./music/{music_name}.mp3', 'wb') as file:
file.write(response.content)
print(f'《{music_name}》下载成功。。。。。。')
# 下载一首歌后延时1秒
time.sleep(1)
爬音乐完整代码已做打包
完整源码和资料
扫描下方二维码免领取源码还有案例↓ ↓ ↓
最后,如果你对Python感兴趣的话。可以试试我整理的这一份全套Python学习资料!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习、自动化测试带你从零基础系统性的学好Python!
👉[[CSDN大礼包:《python安装工具&全套学习资料》免费分享]](安全链接,放心点击)
👉Python学习大礼包👈

更多推荐


所有评论(0)