1.全民k歌
全名k歌文件格式为m4a
爬取实例:
from urllib import request
import re
import os
import json
#个人主页地址
url = "https://kg.qq.com/node/personal?uid=609c9a8d2729378330"
html = request.urlopen(url).read().decode('utf-8')
data = re.findall(r'"ugclist":.*?],', html)#获取页面中数据json,处理有点糙,不过能用哈
ugclists = data[0][10:-1]
for ugclist in json.loads(ugclists):#json.loads把字符串转json,以前没使过Python,这里好像说是什么dict的,也就是key=>value的数据格式,很好理解
print(ugclist['shareid'])#这个数据很关键是每首曲子的id值
print(ugclist['title'])#每首歌的名字
title = ugclist['title']
shareid = ugclist['shareid']
data_url = "http://cgi.kg.qq.com/fcgi-bin/fcg_get_play_url?shareid=" + shareid #通过解析获取到的文件地址及拼接形式,也就是这个曲子的文件下载地址
# 设置保存歌曲的路径,否则会保存到程序当前路径
path = r'/media/××××××××××/music/' # 路径前的r是保持字符串原始值的意思,就是说不对其中的符号进行转义
file = path + title + '.m4a'
is_set = os.path.exists(file)#这里做了简单的文件存在与否的判断,这样以后再执行,文件不会丢失或增多,或覆盖或重复爬取
# 如果文件存在则跳过
if is_set == False:
request.urlretrieve(data_url, path + title + '.m4a') # 使用request.urlretrieve直接将所有远程链接数据下载到本地
2.bilibili
b站短视频由两个m4s文件组成,一个是音频,一个是视频