【程序开发】手把手教你写一个Python爬虫

2023-11-17

经常听音乐的的人有一个苦恼,很多自己喜欢的歌曲,因为各种原因无法进行免费下载。很多人没办法,只能咬咬牙开个会员,都是自己辛苦挣的人民币啊…

幸好,我们还有爬虫!

通过爬虫,我们可以很轻易,很快速的获取互联网上的资源,不管是音乐视频,还是工作和商业中所需要的数据,都可以使用爬虫轻松获取。

百分之90以上的爬虫程序都用Python语言完成,那么什么是爬虫?

网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

目前爬虫工程师也是互联网炙手可热的岗位之一。这里参考了北京市爬虫工程师薪酬状况:

在这里插入图片描述
那么今天我们就来上手写一个爬虫。

一、 准备工作

学习爬虫不难,但是基本的Python知识要有!

建议大家先学习我要自学网《Python初学者教程》中的一部分内容:

必备章节如下:

第一章、 初识Python

第二章、 变量、数据类型

第三章、 选择结构

第四章、 循环结构

第五章、 函数和模块

第六章、 文件读写

这些章节面向初学者,非常简单,学完就可以看懂爬虫的大部分教程了。

然后就可以学习《Python爬虫教程》,开始你的爬虫之旅!

有了基础知识做铺垫之后,我们就可以上手音乐资源写爬虫了,写之前我们需要通过pip工具安装一个request模块:

在这里插入图片描述

二、 分析网站

这是一个音乐列表,其中的歌曲限制下载个数,我们希望利用爬虫突破限制下载列表中的音乐到本地。

在这里插入图片描述
通过浏览器抓包,我们发现每一页请求

中间的pageIndex就是每一页的页码信息,我们想要爬取音乐信息需要先爬取每一页的网页信息,再从网页信息中找到音乐的url,也就是拿到音乐在服务器中的相对地址,就可以很轻易的下载到音乐。

在这里插入图片描述
这里的title为音乐名,sid是音乐的编号,通过音乐编号可以拼接出音乐资源的url。

在这里插入图片描述
以上就是音乐资源的url,其中的1621,也就是sid,我们只要获取了每首歌曲的sid,是不是就可以拼接出歌曲资源的url,就可以直接拿到歌曲资源了?

我们顺便把获取到的title设置为歌曲名,把音乐资源以对应歌曲名保存到本地文件,就完成了音乐的下载。

其中具体的代码实现可以参考下面步骤,我们继续往后看。

三、 爬取音乐列表

我们利用sublime 新建一个Python文件,并准备好以下数据:

在这里插入图片描述
稍后我们爬取到的音乐sid会保存到songId中,音乐名会保存到songName中。

然后通过循环构造每一页音乐列表的url,利用requests爬取到列表所在的网页,这时我们需要的title信息和sid信息都在这个网页中。代码如下:

在这里插入图片描述
最终我们拿到所有的title和sid ,装在了两个列表中。等下我们用来构造歌曲url。

四、 爬取歌曲资源

下面就是构造歌曲资源url,爬取歌曲了!我们依然用requests模块来处理:

在这里插入图片描述
我们用requests.get().content获取到了音乐文件,这是一个二进制文件,用response接收了这个文件,等下我们就可以直接把response写入到本地。

五、 保存音乐到本地

最终,我们以二进制的方式把音乐资源写到本地文件,在这里我们使用到了音乐名,刚好跟我们下载的音乐资源一一对应。

在这里插入图片描述
现在整个爬虫项目就完成了,我们来看一下执行结果:

六、 执行结果

执行之前我们首先要保证本地是否设置好了对应的文件夹,我们在E盘

新建了一个music文件夹,程序执行后会将音乐保存到这里:

在这里插入图片描述
我们看到,音乐已经保存到了指定的文件夹,而且速度很哟!

终于可以好好享受下优美动听的音乐了。

在这里我们只是给出了一个简单的例子,详细系统的教程,大家可以在我要自学网中搜索《Python爬虫教程》。

本教程内容涵盖了网络爬虫的原理以及开发逻辑,网络爬虫基础知识,数据清洗,Scrapy框架等内容。在介绍网络爬虫基本原理的同时,注重具体的代码实现,加深读者对爬虫的理解,加强读者的实战能力。赶快来开始你的爬虫之路吧!

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【程序开发】手把手教你写一个Python爬虫 的相关文章

随机推荐

  • C++实现裴波那契数列——自顶向下递归

    随便写一下 没有整理 注释比较多 大家按需自取 include
  • gitlab 12.0.3_GitLab 13.0强调安全性

    gitlab 12 0 3 GitLab已发布其devops平台的13 0版 该平台集成了用于软件开发 部署和项目管理的工具 GitLab 13 0添加了许多新的安全性和协作功能 GitLab结合了Git开源分布式版本控制系统 持续集成和持
  • C/C++2019秋招面试题集合01

    C C 2019秋招面试题集合01 8 19 腾讯 提前批 客户端开发 1 给定一个字符串数组 和一个子串 求字符串中是否存在子串 如果存在则返回首个匹配到的索引位置 否则 返回 1 不能调用库函数 例如 字符串数组 Integrity P
  • 【小练习】windows与linux进行socket文件传输

    在Windows与Linux使用socket通信基础上 添加文件传输功能 需要进行简单的交互 目录 程序效果 实现流程 样例代码 测试用例 参考资料 程序效果 Windows客户端可以从Linux服务器端索要文件 也可以发送文件至Linux
  • matlab算法集

    matlab 算法集 自定义函数 1 高斯消去法 注 高斯消元法可以用来找出一个可逆矩阵的逆矩阵 设A 为一个N N的矩阵 其逆矩阵可被两个分块矩阵表示出来 将一个N N单位矩阵 放在A 的右手边 形成一个N 2N的分块矩阵B A I 经过
  • HTML的作用与功能,css是什么?有什么作用?

    css是什么 有什么作用 下面本篇文章就来给大家介绍一下CSS样式表 让大家对CSS有一个简单的了解 希望对大家有所帮助 一 CSS定义与解释 CSS是Cascading Style Sheets 层叠样式表单 的简称 CSS就是一种叫做样
  • 生成式对抗网络(GANs)综述

    GAN GAN简介 生成式对抗网络 Generative adversarial networks GANs 的核心思想源自于零和博弈 包括生成器和判别器两个部分 生成器接收随机变量并生成 假 样本 判别器则用于判断输入的样本是真实的还是合
  • main() 方法为什么必须是静态的

    静态 如果您声明方法 子类 块或静态变量 则将其与类一起加载 在Java中 只要需要调用 实例 方法 就应该实例化 包含它的 类并调用它 如果我们需要不实例化地调用方法 则它应该是静态的 此外 静态方法与类一起被加载到内存中 对于main方
  • EduSoho网校系统安装教程(三):nginx配置

    Ubuntu下nginx的配置 安装nginx sudo apt get install nginx 配置Nginx sudo vim etc nginx nginx conf 在http 添加 client max body size 1
  • mysql复制表的几种方式

    mysql复制表的几种方式 所描述的方法还请实际测试一下再使用 1 复制表结构及数据到新表 CREATE TABLE 新表SELECT FROM 旧表 这种方法会将oldtable中所有的内容都拷贝过来 当然我们可以用delete from
  • Exception对性能的影响

    我们知道 当程序发生异常时 会通过new调用异常的构造方法 在堆内存区域创建一个异常实例 而构造方法都是默认调用基类的Throwalbe的构造方法 下面我们看一下代码 public Throwable fillInStackTrace pu
  • webpack4 devserver 如何拦截请求 添加请求headers

    v4官网 https v4 webpack docschina org configuration dev server devserver proxy devServer 配置 devServer host 127 0 0 1 https
  • 使用ffmpeg将mp4转为m3u8并播放

    ffmpeg 下载地址 https ffmpeg zeranoe com builds 这个是我自己的ffmpeg 有积分的大佬可以任性下载 ffmpeg压缩包 下载解压之后需要将ffmpeg添加到环境变量中 cmd中输入 ffmpeg v
  • R语言与数据分析实战4-变量的创建与修改

    第1关 创建新变量 在进行实际的数据分析时 我们会经常需要创建新变量或者为当前存在的变量变换新的取值 这就好比你是一个厨师 现在你要创新菜式 需要做一些新的厨房模具或者是改良当前已有的厨具来进行烹饪 对于创建新变量 其实原理非常简单 大家只
  • shell-2-文本处理工具

    主题 文本处理工具 一 grep grep 全局搜索正则表达式 固定字符表示通用匹配 whatis grep man grep 查看grep用法 正则表达式分为两种 传统 扩展正则表达式 对应的 有两个命令 grep 传统 和 egrep
  • nginx应用指南

    一 nginx基本简述 最新更新 请点击这个里1 概念 nginx是一个开源且高性能 可靠的HTTP中间件 代理服务 开源 直接获取源代码 高性能 支持海量并发 2 nginx应用场景 静态处理 反向代理 负载均衡 资源缓存 安全防护 访问
  • Gson解析JSON数据中动态未知字段key的方法

    有时在解析json数据中的字段key是动态可变的时候 由于Gson是使用静态注解的方式来设置实体对象的 因此我们很难直接对返回的类型来判断 但Gson在解析过程中如果不知道解析的字段 就会将所有变量存储在一个Map中 我们只要实例化这个ma
  • 严格模式和非严格模式区别

    严格模式和非严格模式有什么区别 严格模式对正常的 JavaScript语义做了一些更改 首先 严格模式通过抛出错误来消除了一些原有静默错误 其次 严格模式修复了一些导致 JavaScript引擎难以执行优化的缺陷 有时候 相同的代码 严格模
  • mutex 互斥

    文章目录 互斥 mutex 类 要求 公共方法 注意 lock unlock try lock 相关参考 互斥 互斥算法避免多个线程同时访问共享资源 这会避免数据竞争 并提供线程间的同步支持 mutex 类 mutex 类是能用于保护共享数
  • 【程序开发】手把手教你写一个Python爬虫

    经常听音乐的的人有一个苦恼 很多自己喜欢的歌曲 因为各种原因无法进行免费下载 很多人没办法 只能咬咬牙开个会员 都是自己辛苦挣的人民币啊 幸好 我们还有爬虫 通过爬虫 我们可以很轻易 很快速的获取互联网上的资源 不管是音乐视频 还是工作和商