序言
文中的文本及图片来自互联网,仅作学习培训、沟通交流应用,不具备一切商业行为,如有什么问题请立即在线留言以作解决 。
Python爬虫 、数据统计分析、网站建设等实例视频教程在线免费收看
https://space.bilibili.com/523606542
前文內容
Python爬虫新手入门教学(一):爬取豆瓣影评排名信息内容
Python爬虫新手入门教学(二):爬取小说集
Python爬虫新手入门教学(三):爬取链家二手房数据信息
Python爬虫新手入门教学(四):爬取boss直聘招聘职位
Python爬虫新手入门教学(五):爬取B站视頻视频弹幕
Python爬虫新手入门教学(六):制做词云图
Python爬虫新手入门教学(七):爬取腾迅视频视频弹幕
Python爬虫新手入门教学(八):爬取社区论坛文章内容储存成PDF
Python爬虫新手入门教学(九):线程同步爬虫实例解读
Python爬虫新手入门教学(十):爬取之岸4k高清超清壁纸
Python爬虫新手入门教学(十一):近期腾讯王者荣耀肌肤爬取
Python爬虫新手入门教学(十二):LOL全新肌肤爬取
Python爬虫新手入门教学(十三):爬取高品质超清壁纸
Python爬虫新手入门实例教程(十四):爬取有声小说网站数据信息
基础开发工具
- Python 3.6
- Pycharm
有关控制模块的应用
import requests
import os
安裝Python并加上到环境变量,pip安装必须的有关控制模块就可以。
一、确立要求
爬取某音乐平台的排行榜歌曲。
二 、网页页面数据统计分析
1 、F12或是鼠标点击点一下查验开启微信开发工具 ,点击播放歌曲,下边会载入出歌曲数据信息 。
# 干饭人之歌 音频数据信息详细地址:
https://gm-sycdn.kuwo.cn/82c2c756b7ebeacb907831ff0906199e/601a3aa9/resource/n2/88/78/3642423505.mp3
一键复制黏贴到电脑浏览器中
2、依据音频连接中的主要参数,检索搜索来源于
# 音频连接来源于
https://www.kuwo.cn/url?format=mp3&rid=160864905&response=url&type=convert_url3&br=129kmp3&from=web&t=1612331691895&httpsStatus=1&reqId=550f7f80-65e4-11eb-9b00-6d65a3b5fef1
一首歌曲的来源于详细地址是找不到规律性的 ,因此要再比照一些此外一首歌曲的连接主要参数
如下图所示: rid 和 t 主要参数不一样 ,很显著 t 便是意味着的时间格式,这一应用 time.time() 就拥有,因此能够再次在微信开发工具中检索 rid 的值
https://www.kuwo.cn/api/www/bang/bang/musicList?bangId=93&pn=1&rn=30&httpsStatus=1&reqId=428dcbf0-65e4-11eb-9b00-6d65a3b5fef1
rid 及其 歌曲名 歌手名都是有了 。
三、编码完成
爬虫剖析构思是从上向下逐渐剖析 ,敲代码则是以下往上写。
1 、获得歌曲的 rid 、歌曲名、歌手名
import pprint
import requests
def get_response(html_url):
headers = {
'Cookie': '你自己的cookie',
'csrf': 'D2YF7NMH81N',
'Host': 'www.kuwo.cn',
'Referer': 'https://www.kuwo.cn/rankList',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
}
response = requests.get(url=html_url, headers=headers)
return response
def get_music_info(html_url):
json_data = get_response(html_url).json()
pprint.pprint(json_data)
music_list = json_data['data']['musicList']
for index in music_list:
music_name = index['album']
singer = index['artist']
music_rid = index['rid']
if __name__ == '__main__':
url = 'https://www.kuwo.cn/api/www/bang/bang/musicList?bangId=93&pn=1&rn=30&httpsStatus=1&reqId=428dcbf0-65e4-11eb-9b00-6d65a3b5fef1'
get_music_info(url)
回到的是一个json数据信息,一个一个去赋值就可以了,关键的留意点便是headers主要参数的难题 ,假如主要参数不给全,爬取不上数据信息。
2 、获得音频URL详细地址
def get_music_url(music_rid):
page_url = f'https://www.kuwo.cn/url?format=mp3&rid={music_rid}&response=url&type=convert_url3&br=129kmp3&from=web&t=1612331691895&httpsStatus=1&reqId=550f7f80-65e4-11eb-9b00-6d65a3b5fef1'
json_data = get_response(page_url).json()
music_url = json_data['url']
return music_url
3、储存音频数据信息
def save(music_name, music_url):
path = 'music\\'
if not os.path.exists(path):
os.makedirs(path)
filename = path music_name '.mp3'
headers = {
'if-range': '8eba7fc5d5b2f4d223d54612aa3f4773',
'range': 'bytes=524288-524288',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3861.400 Browser/10.7.4313.400',
}
music_content = requests.get(url=music_url, headers=headers).content
with open(filename, mode='wb') as f:
f.write(music_content)
print('已经储存:', music_name)
要求音乐下载的详细地址的 headers 必须拆换一下 。要不然爬取不上歌曲。