环境

  • Python 3.6
  • Pycharm

模块使用

import os
import requests
import parsel
import re
# 模块安装
'''
如何安装模块:
1. win + R 输入 cmd 输入安装命令: pip install 模块名 回车
2. pycharm里面安装 terminal 输入安装命令: pip install 模块名 回车 模块安装失败的原因:
1. 提示:pip 不是内部命令 你python环境变量可能没有设置好
2. 有安装进度条显示,但是安装到一半出现报错了 因为python安装模块都是在国外的网址进行下载安装的, 国内请求国外 网速很慢,下载速度大 概只有 几KBread time out 网络连接超时 你可以切换为国内的镜像源
3. 明明在cmd里面安装好了,但是在pycharm 提示我没有这个模块 你pycharm里面python解释器没有设置,你在pycharm设置里面重新设置一下
'''

觉得Python自己学不下去的,或者不知道该怎么学,怎么样把知识变现的?

爬虫的基本思路

数据来源分析

  1. 确定需求

  2. 通过开发者工具进行抓包分析

代码实现过程

  1. 发送请求 对于榜单url地址发送请求
  2. 获取数据 获取网页源代码数据
  3. 解析数据 提取所有榜单相对应的url地址
  4. 发送请求 对于 榜单的url地址发送请求
  5. 获取数据 获取网页源代码数据
  6. 解析数据 提取音乐 hash 和 id 值
  7. 发送请求 把 hash 和 id 值 参数相对url里面 发送请求
  8. 获取数据 获取json字典数据
  9. 解析数据 提取 歌名 音乐播放地址
  10. 保存数据

数据来源分析 >>> 发送请求 >>> 获取数据 >>> 解析数据 >>> 保存数据

完整代码

filename = 'music\\'
if not os.path.exists(filename):os.mkdir(filename)def change_title(title):pattern = re.compile(r"[\/\\\:\*\?\"\<\>\|]")  # '/ \ : * ? " < > |'new_title = re.sub(pattern, "_", title)  # 替换为下划线return new_title#  1. 发送请求 对于榜单url地址发送请求
url = 'https://www.kugou.com/yy/html/rank.html'
# 请求头 作用: 伪装  把python代码伪装成浏览器发送请求
# 任意一个数据包的 user-agent 都是一样的
# user-agent 表示的就是浏览器的基本信息
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
#  2. 获取数据 获取网页源代码数据
# print(response.text) # html 字符串数据(想直接解析字符串数据 只能用re) 转成 selector 对象
#  3. 解析数据 提取所有榜单相对应的url地址
selector = parsel.Selector(response.text)
# print(selector)
# css选择器  根据标签的内容 提取想要的数据
# 第一次提取 获取li 标签
lis = selector.css('.pc_rank_sidebar li')
lis = lis[13:]
# 返回的是列表, 所以可以遍历 把里面每一个元素提取出来  Selector 对象
for li in lis:title = li.css('a::attr(title)').get()link_url = li.css('a::attr(href)').get()print(f'=====================正在爬取{title}=====================')# print(title, link_url)# 4. 发送请求 对于 榜单的url地址发送请求response_1 = requests.get(url=link_url, headers=headers)# re.findall('')# 5. 获取数据 获取网页源代码数据 response_1.text# print(response_1.text)# 6. 解析数据 提取音乐 hash 和 id 值hash_list = re.findall('"Hash":"(.*?)"', response_1.text)# \d 匹配一个数字 \d+ 匹配多个数字 .*? 可以匹配任意字符 (除了\n)# 正则表达式匹配的数据 返回的是列表album_id = re.findall('"album_id":(\d+),', response_1.text)for index in zip(hash_list, album_id):hash = index[0]music_id = index[1]# 7. 发送请求 把 hash 和 id 值 参数相对url里面 发送请求index_url = 'https://wwwapi.kugou.com/yy/index.php'params = {'r': 'play/getdata',# 'callback': 'jQuery19106964302346548317_1629810585326','hash': hash,'dfid': '1JdWoI2IQjNS2aq9KB1Ylhf3','mid': 'fe0e97001229790f9065ef29dec3bdcd','platid': '4','album_id': music_id,'_': '1629810585327',}response_2 = requests.get(url=index_url, params=params, headers=headers)# json_data = response_2.json()['data']music_name = response_2.json()['data']['audio_name']new_name = change_title(music_name)music_url = response_2.json()['data']['play_url']if music_url:music_content = requests.get(url=music_url, headers=headers).contentwith open(filename + new_name + '.mp3', mode='wb') as f:f.write(music_content)print(music_name)

Python爬虫案例教学:批量下载某狗所有热门榜单歌曲(附完整源码)相关推荐

  1. Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)

    前言 嗨喽,大家好,这里是魔王~ [课题]: Python零基础爬虫之回车桌面壁纸 [课题介绍]: 壁纸不应该只是一张图片,它应该是一门哲学 回车桌面网100000张无水印,高分辨率,电脑桌面壁纸, ...

  2. abaqus利用python实现部件合并_python脚本实现abaqus前处理2D多晶粒建模(附完整源码)-Voronoi多边形的生成...

    hello,小伙伴们大家下午好呀.今天是2020-12-03. 今天呢,还是讲python脚本,是一个我以前煞费苦心写的,熬死了不少脑细胞写的,今天呢,我就教了大家,我把源码都给你们,让你们省省事. ...

  3. Python爬虫案例:批量下载超清画质手机壁纸

    目录 前言 开发环境 模块使用 基本流程: 一. 数据来源分析 二. 代码实现步骤: 完整代码 1. 发送请求 2. 获取数据 3. 解析数据 4. 保存数据 效果演示 前言 开发环境 Python ...

  4. 知识图谱实战开发案例剖析(16)-第一个智能对话机器人(附完整源码)

    一.前言  这是系列博文<知识图谱实战开发案例剖析>第4部分:知识图谱应用,第16节:第一个智能对话机器人.该系列内容同时已经录制成视频课程,感兴趣的可以访问网易云课堂.  二.正文  2 ...

  5. Python:实现prime sieve eratosthenes埃拉托斯特尼素数筛选法算法(附完整源码)

    Python:实现prime sieve eratosthenes埃拉托斯特尼素数筛选法算法 # flake8: noqa def prime_sieve_eratosthenes(num):prim ...

  6. Python爬虫——利用Scrapy批量下载图片

    Python爬虫--利用Scrapy批量下载图片 Scrapy下载图片项目介绍 使用Scrapy下载图片 项目创建 项目预览 创建爬虫文件 项目组件介绍 Scrapy爬虫流程介绍 页面结构分析 定义I ...

  7. 知识图谱实战案例完全剖析(附完整源码和数据集)-张子良-专题视频课程

    知识图谱实战案例完全剖析(附完整源码和数据集)-2070人已学习 课程介绍         课程定位:系统学习知识图谱的佳实践: 系统学习:完全覆盖知识建模.图数据库.知识应用和知识获取: 实战指引: ...

  8. Python实现恩尼格玛加密算法——附完整源码

    Python实现恩尼格玛加密算法--附完整源码 恩尼格玛是第二次世界大战中德国所使用的复杂电机械式密码机.它被认为是世界上最复杂的加密设备之一.在这个项目中,我们将使用Python模拟实现恩尼格玛加密 ...

  9. Python语言打造智能语音助手——附完整源码

    Python语言打造智能语音助手--附完整源码 随着智能家居.智能办公等领域的逐渐兴起,实现语音控制与交互已成为了一种趋势.而Python语言是一门极具魅力的编程语言,其强大的库.简洁的语法以及易于学 ...

最新文章

  1. Vm-Tools 安装指南
  2. 2020 年 Java 面试常见 350 题
  3. 等值线在Google Map上的叠加Extent
  4. Redis的编译安装
  5. Nokia的北美困局
  6. 外媒:已有5家芯片厂商获准继续向华为供货
  7. 《Java编程思想》读书笔记-对象导论
  8. 聚类分析原理(及Python实现K-means代码详解)
  9. CI24R1低成本国产2.4G无线收发器芯片替代XN297精简版SI24R1
  10. 简单的了解一下MySQL连接查询
  11. 小米面试offer加油
  12. stata--异方差处理(3种方法比较)
  13. 从零搭建WNMP环境
  14. 基于51单片机的秒表系统设计(源代码+Proteus仿真图)
  15. javascript:window.scroll()函数behavior属性smooth属性值在iphone浏览器上不兼容
  16. MySQL三种插入方式
  17. SVN: E155036:This client is too old to work with working copy…解决方法
  18. Python爬虫(一):简单小说爬取实例
  19. html canvas颜色渐变色,HTML5-画布(canvas)效果之-渐变色
  20. python tkinter entry默认值_Python ---(六)Tkinter窗口组件:Entry

热门文章

  1. VMware vSphere中三种磁盘模式:精简置备/厚置备置零/厚置备延迟置零
  2. 小学信息计算机,[原创]小学信息技术名词解释
  3. linux sed不起作用,Linux:sed工具
  4. 【转】真实案例引起的对系统健壮性的思考(张逸,2012-02-07)
  5. 前端项目实战30-多加一个列表表示详情
  6. 信用卡逾期多久会被判定为判刑
  7. 小红书笔记打开显示连接不到服务器,小红书笔记看不到全文怎么回事啊?怎么发布小红书笔记?...
  8. php修改音频文件_php如何实现音频格式转换
  9. 年薪大佬带你如何使用maya和zbrush制作次世代女性角色?值得收藏
  10. 查询最近电脑都访问过哪些文件