Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件

news/2025/2/11 13:56:01/

前言

今天给大家介绍的是Python爬取飙歌榜所有音频数据并保存本地,在这里给需要的小伙伴们代码,并且给出一点小心得。

首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫,基本的是加请求头,但是这样的纯文

本数据爬取的人会很多,所以我们需要考虑更换代理IP和随机更换请求头的方式来对音乐数据进行爬取。

在每次进行爬虫代码的编写之前,我们的第一步也是最重要的一步就是分析我们的网页。

通过分析我们发现在爬取过程中速度比较慢,所以我们还可以通过禁用谷歌浏览器图片、JavaScript等方式提升爬虫爬取速度。

开发工具

Python版本: 3.8

相关模块:

requests模块

re模块

urllib模块

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

思路分析

浏览器中打开我们要爬取的页面
按F12进入开发者工具,查看我们想要的音乐数据在哪里
这里我们需要页面数据就可以了

源代码
找规律

代码实现

# 存放音乐文件的文件夹
folder = r'F:\music'
if not isdir(folder):mkdir(folder)# 音乐飙升榜地址
url = 'https://music.163.com/discover/toplist?id=3779629'
# 模拟Chrome浏览器
headers = {'User-Agent': 'Chrome/88.0.4324.190'}
req = Request(url, headers=headers)
# 读取网页源代码
with urlopen(req) as fp:content = fp.read().decode()# 正则表达式,提取音乐id和名字
pattern = r'<li><a href="/song\?id=(.+?)">(.+?)</a></li>'
for music_id, music_name in findall(pattern, content):music_file = rf'{folder}\{music_name}.mp3'if isfile(music_file):print(f'文件已存在,跳过...{music_name}')continue# 下载地址download_url = rf'https://music.163.com/song/media/outer/url?id={music_id}'req = Request(download_url, headers=headers)# 读取网络音乐文件数据,写入本地文件with urlopen(req) as fp:content = fp.read()with open(music_file, 'wb') as fp:fp.write(content)print(f'下载完成...{music_name}')

结果展示

结果

最后

为了感谢读者们,我想把我最近收藏的一些编程干货分享给大家,回馈每一个读者,希望能帮到你们。

里面有适合小白新手的Python实战教程给到大家~

快来和小鱼一起成长进步吧!

① 100+多本PythonPDF(主流和经典的书籍应该都有了)

② Python标准库(最全中文版)

③ 爬虫项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)


http://www.ppmy.cn/news/2738.html

相关文章

外汇天眼:什么是外汇动量交易?新手指南

1. 什么是动量交易&#xff1f; 我们需要了解的第一件事是动量到底是什么。势头是字面意义上的趋势强度。动量交易策略涉及仅在强劲的价格趋势方向开仓&#xff0c;利用持续的价格变动&#xff0c;并在趋势逆转之前退出。 动量交易者通常不会担心趋势在哪里结束和开始&#x…

【软件测试】资深测试告诉你做好测试需求分析是有多么重要......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试需求到底是什么…

【能效分析】安科瑞变电所运维云平台解决方案应用分析

概述 安科瑞 李亚俊 壹捌柒贰壹零玖捌柒伍柒 AcrelCloud-1000变电所运维云平台基于互联网&#xff0b;大数据、移动通讯等技术开发的云端管理平台&#xff0c;满足用户或运维公司监测众多变电所回路运行状态和参数、室内环境温湿度、电缆及母线运行温度、现场设备或环境视频场…

华为机试真题 Java 实现【最长的密码】【2022.11 Q4 新题】

目录 题目 思路 考点 Code 题目 小王在进行游戏大闯关,有一个关卡需要输入一个密码才能通过,密码获得的条件如下: 在一个密码本中,每一页都有一个由26个小写字母组成的若干位密码,每一页的密码不同,需要从这个密码本中寻找这样一个最长的密码, 从它的末尾开始依次去…

一文4000字教你如何使用可视化的Docker进行UI自动化测试

随着 docker 的发展&#xff0c;很多测试的同学也已经在测试工作上使用 dockr 作为环境基础去进行一些自动化测试&#xff0c;这篇文章主要讲述我们在 docker 中使用浏览器进行自动化测试如果可以实现可视化&#xff0c;同时可以对浏览器进行相关的操作。 开篇 首先我们先了解…

【代码随想录】二刷-回溯算法

回溯算法 《代码随想录》 什么是回溯算法&#xff1f; 回溯算法也可以叫做回溯搜索法&#xff0c;它是一种搜索方式。回溯是递归的副产品&#xff0c;只要有递归就会有回溯。 回溯法的效率: 回溯法的本质是穷举&#xff0c;穷举所有可能&#xff0c;然后选出我们想要的答案。(n…

[附源码]计算机毕业设计JAVA中青年健康管理监测系统

[附源码]计算机毕业设计JAVA中青年健康管理监测系统 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM …

vue中使用visibilitychange事件来获取页面当前可见性

前言 在系统中&#xff0c;如果有打开新页面进行相关操作&#xff0c;若是有关联操作就需要通过判断页面的可见性来进行后绪的操作 一、触发visibilitychange变更的情况 页面的可见性有三个层面 页面可见时&#xff0c;用户关闭 Tab 页或浏览器窗口。页面可见时&#xff0c…