码农知识堂 - 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)

  • 相关阅读:
    网络安全之内容安全
    ESP8266-Arduino网络编程实例-OTA升级固件(基于Arduino IDE)
    据包捕获和分析工具作原理和用途
    02-Scala变量与数据类型
    【HTML】【休闲益智】还有9块月饼并未获得!请及时出战!(解锁月饼小游戏
    Python开发技术—文件和异常4
    【JavaEE基础与高级 第54章】Java中的转换流的使用详解
    淘宝/天猫如何获得店铺的所有商品?
    Java---Map双列集合
    Leetcode 450. 删除二叉搜索树中的节点
  • 原文地址:https://blog.csdn.net/caoli201314/article/details/134175839
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号