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

前言

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

爬虫的基本原理

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

爬虫的分类

  1. 通用爬虫

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

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

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

爬虫的合法性和道德

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

  1. 遵守网站的 robots.txt

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

  3. 避免过度抓取

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

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

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

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

侦察

打开页面

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)

项目效果

作者:Suc2es2

物联沃分享整理
物联沃-IOTWORD物联网 » Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲

发表回复