1、查看歌曲

​http://www.xiaoxina.cn/api.php?s=歌曲名&num=数量​​ 它的属性为

网易云音乐的API接口及爬虫代码_json


代码如下:

import requests
import json

def get_song(SongName):
url = "http://www.xiaoxina.cn/api.php?s=" + SongName + "&num=10"
req=requests.get(url)
html=json.loads(req.text)
for item in html:
print(item["name"],item["picLink"],item["id"],item["singer"],item["url"])


if __name__ == "__main__":
SongName=input("请输入歌名:")
get_song(SongName)

输出结果如下:

网易云音乐的API接口及爬虫代码_php_02


2、查看粉丝

请求头:

Referer:​​http://music.163.com/user/fans?id=97526496​

获取指定用户的粉丝:
​​​http://music.163.com/weapi/user/getfolloweds?csrf_token=​

3、动态:
​​​http://music.163.com/user/event?id=97526496​​​​http://music.163.com/weapi/event/get/97526496?csrf_token=​

4、播放
​​​http://music.163.com/weapi/song/enhance/player/url​​​ 直接播放地址:id可以改为任何存在的歌曲的ID
​http://music.163.com/outchain/player?type=2&id=516392300&auto=1&height=66&bg=e8e8e8​

5、评论(热门评论和全部评论)
520458203这就是歌曲的id
​​​http://music.163.com/api/v1/resource/comments/R_SO_4_520458203​​ 爬取歌曲评论的代码:

import requests
import json
from requests.exceptions import RequestException
from urllib.parse import urlencode
from multiprocessing import Pool#多进程池
def get_response(offset,limit,SongID):
para = { #参数
'offset':offset,#页数
'limit':limit#总数限制
}
musicid = str(SongID) # 歌曲ID
musicurl = "http://music.163.com/api/v1/resource/comments/R_SO_4_"+musicid+"?"+urlencode(para) #歌曲api地址
headers = { #头结构
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding':'gzip, deflate, sdch',
'Accept-Language':'zh-CN,zh;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Cookie':'vjuids=-13ac1c39b.1620457fd8f.0.074295280a4d9; vjlast=1520491298.1520491298.30; _ntes_nnid=3b6a8927fa622b80507863f45a3ace05,1520491298273; _ntes_nuid=3b6a8927fa622b80507863f45a3ace05; vinfo_n_f_l_n3=054cb7c136982ebc.1.0.1520491298299.0.1520491319539; __utma=94650624.1983697143.1521098920.1521794858.1522041716.3; __utmz=94650624.1521794858.2.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; JSESSIONID-WYYY=FYtmJTTpVwmbihVrUad6u76CKxuzXZnfYyPZfK9bi%5CarU936rIdoIiVU50pfQ6JwjGgBvSyZO0%2FR%2BcoboKdPuMztgHCJwzyIgx1ON4v%2BJ2mOvARluNGpRo6lmhA%5CfcfCd3EwdS88sPgxpiiXN%5C6HZZEMQdNRSaHJlcN%5CXY657Faklqdh%3A1522053962445; _iuqxldmzr_=32',
'Host':'music.163.com',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0'
}
try:
response = requests.post(musicurl,headers=headers)
if response.status_code == 200: #如果请求成功
return response.content #返回请求内容
except RequestException:
print("访问出错")


def parse_return(html): #解析返回页
data = json.loads(html)#将返回的值格式化为json
if data.get('comments'):
comments = data['comments']
SongInfo=[]
for item in comments:
person = []
person.append(item['user']['nickname']) #用户的昵称
person.append(item['user']['avatarUrl']) #用户的头像URL
person.append(item['content']) #用户的评论内容
SongInfo.append(person)
return SongInfo


def get_song(SongName):
url = "http://www.xiaoxina.cn/api.php?s=" + SongName + "&num=1" #只搜索一个结果,num表示搜索的结果数
req=requests.get(url)
html=json.loads(req.text) #加载为JSON格式
SongID=""
for item in html:
print(item["name"],item["picLink"],item["id"],item["singer"],item["url"])
SongID=SongID+str(item["id"])
return SongID #返回歌曲ID


if __name__ == "__main__":
SongName=input("请输入歌曲名字:")
SongID=get_song(SongName) #得到歌曲ID
gethtml = get_response(1,200,SongID) #得到歌曲评论的内容
SongInfo=parse_return(gethtml) #返回解析的内容
for a,b,c in SongInfo:
print(a,b,c)


输出结果如下:

网易云音乐的API接口及爬虫代码_html_03