Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲

news2024/12/23 1:38:22

前言

网络爬虫(Web Crawler),也称为网页蜘蛛(Web Spider)或网页机器人(Web Bot),是一种按照既定规则自动浏览网络并提取信息的程序。爬虫的主要用途包括数据采集、网络索引、内容抓取等。

爬虫的基本原理

  1. 种子 URL:爬虫从一个或多个种子 URL 开始,这些 URL 是起点。
  2. 发送请求:爬虫向这些种子 URL 发送 HTTP 请求,通常是 GET 请求。
  3. 获取响应:服务器返回网页的 HTML 内容作为响应。
  4. 解析内容:爬虫解析 HTML 内容,提取所需的数据(如文本、链接、图片等)。
  5. 提取链接:从网页中提取出所有链接,并将这些链接加入待访问队列。
  6. 重复过程:爬虫重复上述步骤,直到达到某个停止条件,如爬取了一定数量的页面,或所有页面都被爬取完毕。

爬虫的分类

  1. 通用爬虫

    • 设计用于抓取整个互联网的大量网页。搜索引擎(如 Google、Bing)的爬虫就是通用爬虫。
  2. 聚焦爬虫

    • 专注于特定主题或领域,抓取相关网页。比如,一个新闻爬虫只抓取新闻网站的内容。
  3. 增量爬虫

    • 仅抓取自上次爬取以来发生变化或更新的网页,适用于动态内容更新频繁的网站。

爬虫的合法性和道德

在编写和运行爬虫时,必须遵循以下原则:

  1. 遵守网站的 robots.txt

    • 大多数网站都有一个 robots.txt 文件,规定了哪些页面允许被爬取,哪些不允许。爬虫应当尊重这些规则。

  2. 避免过度抓取

    • 设置适当的抓取频率,避免对服务器造成过大负担。
  3. 尊重版权和隐私

    • 不应抓取或使用受版权保护的内容,或涉及用户隐私的数据。
  4. 获取许可

    • 在某些情况下,最好获得网站管理员的许可,特别是当你打算频繁地抓取大量数据时。

通过以上方法和原则,可以编写高效、可靠且合规的网络爬虫来满足数据采集的需求。 

侦察

打开页面

F12 检查定位关键元素

在网络中刷新页面

搜索关键字

查看在页面中的渲染情况是不是我们想要的数据,可以看到这里列出了200首歌那么就是的

在标头中确定数据来源地址及请求方法

源代码

import re
import os
import requests


filename = 'music\\'

# 如果没有则创建文件夹
if not os.path.exists(filename):
    os.makedirs(filename)

# 请求网址(如果想要爬取其他的榜单的歌曲内容,只需要改这个 url 即可)
url = 'https://music.163.com/playlist?id=3778678'

# 伪造请求头
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36'
}

# 发送请求
response = requests.get(url, headers=headers)

# re.findall
# 这个函数用于在字符串中查找所有与正则表达式模式匹配的部分,并返回一个包含所有匹配项的列表
# r 前缀表示这是一个原始字符串,其中的反斜杠不会被解释为转义字符
# (\d+): 捕获组,匹配一个或多个数字
# (.*?): 捕获组,非贪婪匹配任何字符(包括空字符),直到遇到 </a>
html_data = re.findall(r'<li><a href="/song\?id=(\d+)">(.*?)</a>', response.text)

# 正则表达式提取出来的一个内容返回是列表 里面每一个元素都是元组
for num_id, title in html_data:
    # 调用接口
    music_url = f'https://music.163.com/song/media/outer/url?id={num_id}.mp3'

    # 发送请求获取二进制数据
    music_content = requests.get(music_url, headers=headers)

    # 保存
    with open('music\\' + title + '.mp3', 'wb') as f:
        f.write(music_content.content)
        print(num_id, title)

项目效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1973823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

World of Warcraft [RETAIL] UI Setting

/*测试魔兽世界正式服&#xff0c;界面UI编辑器&#xff0c;UI布局文本 World of Warcraft [RETAIL] UI Setting开头的&#xff1a;1 39 某种类型 &#xff1a; 序号&#xff08;默认-1&#xff0c;有多个从0开始计数0,1,2,3 未知类型 未知类型 未知类型 控件类型&#xff1…

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.8项目管理知识领域

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

vue2-04-利用VueCli脚手架搭建vue2项目步骤、目录解读、eslint缩进配置、自适应配置、less

目录 前置信息创建vue2项目目录解读在VSCode中启动项目eslint配置自适应配置&#xff08;px自动转rem&#xff09;less配置 前置信息 我用的代码编译器是VSCode&#xff0c;node版本是16.20.2&#xff0c;npm版本是8.19.4&#xff0c;项目选用的是less预处理&#xff0c;npm安…

EyouCMS响应式高端网站建设互联网营销网站模板/易优CMS网站建设类企业网站模板源码

EyouCMS响应式高端网站建设互联网营销网站模板&#xff0c;易优CMS网站建设类企业网站模板源码。适用于IT、软件、互联网、游戏类企业网站建设使用。 模板自带eyoucms内核&#xff0c;无需再下载eyou系统&#xff0c;原创设计、手工书写DIVCSS&#xff0c;完美兼容IE7、Firefo…

链式二叉树的实现

文章目录 &#x1f3af;引言&#x1f453;链式二叉树的实现1.链式二叉树的结构2.链式二叉树相关操作实现2.1源码展示2.2函数实现详解2.2.1前中后序遍历2.2.2二叉树的其他方法实现2.2.3二叉树的层序遍历和判断是否是完全二叉树 &#x1f947;结语 &#x1f3af;引言 欢迎来到Ha…

论文笔记:InternImage—基于可变形卷积的视觉大模型,超越ViT视觉大模型,COCO 新纪录 64.5 mAP!

文章信息 Title&#xff1a;InternImage: Exploring Large-Scale Vision Foundation Models with Deformable ConvolutionsPaper Link&#xff1a;https://arxiv.org/abs/2211.05778 Code Link&#xff1a;https://github.com/OpenGVLab/InternImage 写在前面 拿到文章之后先看…

科普文:微服务之Spring Cloud Alibaba消息队列组件RocketMQ如何保证发送消息不丢失

概叙 本文分析了 RocketMQ 同步发送、异步发送和单向发送三种方式的原理、优缺点以及使用场景&#xff0c;并且分析了每种方式涉及到的核心源码。 科普文&#xff1a;微服务之Spring Cloud Alibaba版本选择-CSDN博客 通过上文的介绍可以知道同步发送方式可以保证消息发送时不…

git分支介绍

git branch 查看当前分支情况 可以看见当前只有一个分支叫main&#xff0c;也就是默认分支&#xff0c;可以理解为树的主干&#xff0c;git早期版本中默认分支叫master 命令行创建一个新分支 git branch [分支名]在创建之后&#xff0c;如果需要切换到新分支需要git switc…

用VBA在Word文档中快速查找到黄色底纹内容

一、效果展示 二、代码 Sub 快速查找定位到黄色底纹内容()With Selection.Find.ClearFormatting.Wrap wdFindContinue.Font.Shading.BackgroundPatternColorIndex wdYellow.ExecuteEnd With End Sub

C++面向对象高级编程(I)侯捷 自我总结版

关键词&#xff1a; 类的防卫式声明&#xff0c;模版&#xff0c;内联函数&#xff0c;构造函数以及重载&#xff0c;const&#xff0c;pass by reference&#xff08;有&符号&#xff09;&#xff0c;friend&#xff0c;操作符重载&#xff0c;返回local object的不能retu…

【LightGlue】lightglue performance

【LightGlue】lightglue performance 1. 图表分析2. 数据点解释3. LightGlue的细节4. 结论 这张图表展示了不同特征匹配方法在图像对每秒处理速度和相对位姿精度&#xff08;Relative Pose Accuracy&#xff09;之间的关系。 1. 图表分析 X轴&#xff08;横轴&#xff09;&…

使用 abortNavigation 阻止导航

title: 使用 abortNavigation 阻止导航 date: 2024/8/3 updated: 2024/8/3 author: cmdragon excerpt: 摘要&#xff1a;在Nuxt3中&#xff0c;abortNavigation是一个辅助函数&#xff0c;用于路由中间件内阻止不符合条件的页面访问&#xff0c;实现权限控制、错误处理及动态…

3条职场情商法则,让你少走弯路

人生的幸福和工作息息相关&#xff0c;它占据了大量时间&#xff0c;而时间是人生最珍贵的资源。但当年轻人从校园走进职场时&#xff0c;却常常面临困境。因为职场和学校是完全不同的场所&#xff0c;游戏规则大相径庭。 人们会惊奇地发现&#xff0c;曾经的学霸可能在职场中…

Qt 5.14安装(配置MSVC 2017)

Qt 5.14安装&#xff08;配置MSVC 2017&#xff09; 记录一下自己安装配置Qt的步骤。 我需要安装Qt&#xff0c;并使用MSVC编译&#xff0c;所以才写了这篇文章。 一、环境 操作系统&#xff1a;windows 11 &#xff08;64位&#xff09; Qt&#xff1a;Qt 5.14.2 vs&…

Linux 命令,touch说明与使用

1&#xff1a;touch命令功用&#xff1a; 对一个或多个文件,将访问时间和修改时间以及日期进行更新&#xff0c;既在 Linux 和 Unix 系统中&#xff0c;改变文件的访问和修改时间&#xff0c;touch对于强制其他的命令以某一方式处理文件时是有用的。如make的操作 和某些find命令…

LED显示屏的秘密:揭秘模拟信号与模拟电路

在我们日常生活中&#xff0c;LED显示屏无处不在&#xff0c;从商场的广告牌到舞台的背景墙&#xff0c;它们用绚丽多彩的画面吸引着我们的眼球。但你是否好奇&#xff0c;这些神奇的屏幕背后&#xff0c;是如何处理和显示信息的呢&#xff1f;今天&#xff0c;就让我们一起揭开…

计算机毕业设计hadoop+hive+spark医院数据分析大屏 医疗数据分析 医疗可视化 医院大数据 医院爬虫 医疗爬虫 数据仓库 大数据毕业设计

绪论 研究背景和意义 近年来&#xff0c;随着第五次科技革命的到来&#xff0c;科学、信息技术等迅猛发展&#xff0c;医疗信息方面的数据激增&#xff0c;全国各大医院每日也产生大量的数据&#xff0c;包括门诊每日接诊数据、患者信息数据、医院资源消耗数据等。数据的高速产…

Radamsa:一款高性能通用模糊测试工具

关于Radamsa Radamsa是一款高性能的通用模糊测试工具&#xff0c;广大研究人员可以将其当作一个应用程序稳定性测试的测试用例生成工具。 工具运行机制 该工具使用简单&#xff0c;支持自定义脚本开发&#xff0c;可以用于测试程序对格式错误和潜在恶意输入的承受能力。它的工…

MapCrafter - 定制精美的地图海报! | 限时免费

MapCrafter: 打造个性化城市地图海报的终极工具&#xff01; 在您的 iPhone、iPad、Mac 或 VisionPro 上轻松制作美丽的城市地图海报&#xff0c;展示您的城市情感与创意。 https://apps.apple.com/cn/app/mapcrafter/id6557037905 为什么选择 MapCrafter&#xff1f; • 城市…

【中项】系统集成项目管理工程师-第9章 项目管理概论-9.7 项目管理原则

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…