Python爬虫实战,Request+urllib模块,批量下载爬取飙歌榜所有音乐文件
创始人
2024-03-27 04:55:38
0

前言

今天给大家介绍的是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'
  • (.+?)
  • ' 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学习路线图(告别不入流的学习)

    相关内容

    热门资讯

    监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
    Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
    protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
    在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
    Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
    educoder数据结构与算法...                                                   ...
    MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
    MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
    有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
    【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...