前言
嗨喽!大家好呀,这里是魔王~
环境介绍
- python 3.8
- pycharm
模块使用
- requests >>> 数据请求模块 第三方模块 pip install requests
- re >>> 正则表达式 解析数据 内置模块 不需要安装
win + R 输入cmd 输入安装命令 pip install 模块名 如果出现爆红 可能是因为 网络连接超时 切换国内镜像源
如果你想要去实现一个爬虫案例, 你会怎么去做?
分析: 分析我们想要的数据是从哪来可以获得… 音频url
通过开发者工具进行抓包分析
- 找到音频url地址
- 找到音频数据包
这个数据包里面就包含了我们想要音频url地址 - 对比数据包请求参数变化规律 每一个音频都是有其对应的音频ID
- 通过开发者工具 搜索ID 查询ID来源… 网页源代码里面就有我们想要音频ID
写代码目的 最终为了获取音频url >>> 音频数据包 >>> 得到音频ID
代码实现步骤: 爬虫是模拟浏览器对于url地址发送请求, 从而获取数据
一. 第一次请求, 为了获取音频ID以及音频标题
- 发送请求, 对于音频目录页面发送请求
- 获取数据, 获取服务器返回响应数据
- 解析数据, 提取我们想要音频ID以及音频标题
二. 第二次请求, 为了获取音频url地址
- 发送请求, 对于音频数据包发送请求
- 获取数据, 获取服务器返回响应数据
- 解析数据, 提取音频url地址
三. 第三次请求, 为了获取音频二进制数据, 从而进行保存
- 保存数据
代码
# import requests # 数据请求模块 第三方模块 pip install requests
# """
# 发送请求
# 对于哪一个url地址发送请求, 发送什么样请求
#
# 爬虫发送请求你可以看做打电话的一个过程
# import requests 工具 手机
# url 电话号码
# headers 信号
# get 打电话的方式 座机是需要加区号 长沙0731
# <Response [200]> 打电话通了 200 嘟嘟嘟的声音 404 您所拨打电话是空号
# """
# for page in range(2, 17):
# url = f'https://www.ximalaya.com/revision/album/v1/getTracksList?albumId=8625924&pageNum={page}&sort=0' # 唯一资源定位符
# # 模拟浏览器 headers请求头 字典数据类型, 构建成键值对形式
# headers = {
# 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36'
# }
# response = requests.get(url=url, headers=headers)
# # print(response.text) # <Response [200]> 响应对象 200 状态码表示请求成功 404 网址不对
# # re.findall() 调用re模块里面findall方法 从那些数据里面, 获取什么样的数据内容 \d+ 匹配一个数字或者多个数字
# audio_info = response.json()['data']['tracks']
# # print(audio_info)
# for index in audio_info:
# # 字符串格式化方法 {} 占位符
# link = f'https://www.ximalaya.com/revision/play/v1/audio?id={index["trackId"]}&ptype=1'
# # print(link)
# # 获取响应对象json字典数据
# json_data = requests.get(url=link, headers=headers).json()
# audio_url = json_data['data']['src']
# """
# response.text 数据类型是字符串 响应对象文本数据
# response.json() 数据类型是字典 响应对象json字典数据
# response.content 二进制数据内容
# ctrl + alt + L 格式化代码 和网易云收藏按键 以及QQ 锁定按键冲突
# """
# audio_content = requests.get(url=audio_url, headers=headers).content
# with open('audio\\' + index['title'] + '.mp3', mode='wb') as f:
# f.write(audio_content)
# print(link, index['title'])
def get_num():
lis = []
for a in range(10):
for b in range(10):
for c in range(10):
for d in range(10):
num = f'{a}{b}{c}{d}'
lis.append(num)
return lis
print(get_num())
string = '1111122211'
string = string.replace('2', '3')
print(string)
尾语
好了,我的这篇文章写到这里就结束啦!
有更多建议或问题可以评论区或私信我哦!一起加油努力叭(ง •_•)ง
喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!