码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Python爬虫实战-批量爬取下载网易云音乐


    大家好,我是python222小锋老师。前段时间卷了一套 Python3零基础7天入门实战icon-default.png?t=N7T8https://blog.csdn.net/caoli201314/article/details/132882813
    1小时掌握Python操作Mysql数据库之pymysql模块技术icon-default.png?t=N7T8https://blog.csdn.net/caoli201314/article/details/133199207
    一天掌握python爬虫【基础篇】 涵盖 requests、beautifulsoup、seleniumicon-default.png?t=N7T8https://blog.csdn.net/caoli201314/article/details/134071440

    近日锋哥又卷了一波Python实战课程-批量爬取下载网易云音乐,主要是巩固下Python爬虫基础

    视频版教程:Python爬虫实战-批量爬取下载网易云音乐icon-default.png?t=N7T8https://www.bilibili.com/video/BV1aw411M72B/

    网易云音乐官方主页:

    https://music.163.com/

    比如我们打开邓紫棋的主页:

    https://music.163.com/#/artist?id=7763

    现在我们要爬取这里面的音乐文件,我们正常人的分析思路是这样的。

    1. 思路:
    2. 1,根据歌手链接地址获取页面源码
    3. 2,解析页面源码获取所有歌曲列表
    4. 3,遍历,下载每首歌曲

    前面两步很简单,很容易实现。

    第三步,我们点 音乐列表 前面的播放按钮,当前页面底部会出现播放器,播放音乐。

    谷歌 F12 进入开发者工具,点 Media 我们是可以得到音乐的源文件的。包括VIP音乐

    我们要通过Python得到这个请求地址,需要进行js逆向,破解,得到js方法源代码,然后进行模拟拼接动态请求,得到音乐二进制文件,锋哥上有老,下有小,容易受到律师函,进去踩缝纫车,就不搞这种方式。

    我们还是采用网易云官方提供的API接口进行获取音乐文件,包括在线播放。

    网易云音乐开放接口:http://music.163.com/song/media/outer/url?id=歌曲ID  (VIP音乐下载不了)

    完整可运行代码如下。具体代码分析,可以看帖子开头的视频教程

    1. """
    2. 思路:
    3. 1,根据歌手链接地址获取页面源码
    4. 2,解析页面源码获取所有歌曲列表
    5. 3,遍历,下载每首歌曲
    6. python爬虫前置基础视频教程:http://python222.com/post/7
    7. 备注:网易云音乐开放接口:http://music.163.com/song/media/outer/url?id=歌曲ID (VIP音乐下载不了)
    8. 测试:https://music.163.com/#/artist?id=7763
    9. 仅供学习测试
    10. """
    11. import requests
    12. from bs4 import BeautifulSoup
    13. headers = {
    14. 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    15. }
    16. # 获取用户输入的歌手链接页面
    17. singer_url = input("请输入您要下载的歌手页面链接:")
    18. # 格式化下载链接
    19. url = singer_url.replace("/#", '')
    20. response = requests.get(url=url, headers=headers)
    21. # print(response.text)
    22. # 实例化bs4
    23. soup = BeautifulSoup(response.text, 'lxml')
    24. # 获取歌曲列表
    25. song_list = soup.select("ul.f-hide li a")
    26. print(song_list)
    27. def download_song(song_name, song_id):
    28. """
    29. 下载歌曲
    30. :param song_name: 歌曲名称
    31. :param song_id: 歌曲ID
    32. :return:
    33. """
    34. music_open_api = "http://music.163.com/song/media/outer/url?id=" + song_id
    35. music = requests.get(url=music_open_api, headers=headers)
    36. # 下载歌曲
    37. try:
    38. with open(f"./music/{song_name}.mp3", 'wb') as file:
    39. file.write(music.content)
    40. print(f"《{song_name}》下载成功")
    41. except:
    42. print(song_name, "下载异常")
    43. for song in song_list:
    44. # 获取歌曲名称
    45. song_name = song.text
    46. # print(song_name)
    47. # 获取歌曲ID
    48. song_id = song['href'].split("=")[1]
    49. # 下载歌曲
    50. download_song(song_name, song_id)

  • 相关阅读:
    黑客技术(自学)——网络安全
    Spring Cloud OpenFeign - - - >拦截器
    Ubuntu 20.04二进制部署Nightingale v6.1.0和Prometheus
    微积分入门书籍(二)
    Qt QWidget 简约美观的加载动画 第五季 - 小方块风格
    Vue3框架的创建的两种种方案(第十二课)
    能源照明运作机制与智能调控技术实现途径
    Java(类和对象笔记)
    工厂人员违规行为识别系统
    SwiftUI 动态岛开发教程之02 iPhone 14 Pro 如何使用 Dynamic Island
  • 原文地址:https://blog.csdn.net/caoli201314/article/details/134175839
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号