获取网易云音乐飙升榜
通过代码,获取榜单音乐链接,歌曲名字,歌曲作者等
下面是详细代码内容
import json
import requests
from bs4 import BeautifulSoup
import csv
def get_music_name():
def music_times(time):
music_time_ = time // 1000
_time = music_time_ % 60
music_time_ //= 60
if _time <= 9:
_time = '0' + str(_time)
_time = str(_time)
music__time = str(music_time_) + ':' + _time
return music__time
url = 'https://music.163.com/discover/toplist'
url_head = 'https://music.163.com'
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/87.0.4280.141 Safari/537.36'}
response = requests.get(url, headers=headers)
if response.status_code == 200:
with open('music_message.csv', 'w', encoding='utf-8') as stream:
dict_stream = csv.DictWriter(stream, ['music_ranking', 'music_name', 'music_time',
'music_author', 'music_url'])
data = response.text
soup = BeautifulSoup(data, 'html.parser')
comment = soup.select_one('#song-list-pre-cache')
music_dicts = comment.select_one('textarea').string
music_dict = json.loads(music_dicts)
items = comment.select('a')
all_comments = []
i = 0
for item in items:
music_comment = {}
music_name = item.text
music_url = item.get('href')
music_time = music_dict[i]['duration']
music_author = music_dict[i]['artists'][0]['name']
i += 1
music_ranking = i
music_comment['music_ranking'] = music_ranking
music_comment['music_name'] = music_name
music_comment['music_time'] = music_times(music_time)
music_comment['music_author'] = music_author
music_comment['music_url'] = url_head + music_url
all_comments.append(music_comment)
dict_stream.writerows(all_comments)
print('写入完毕')
return all_comments
else:
print('网页丢失!')
if __name__ == '__main__':
music_list = get_music_name()
后期实现目标,通过歌曲链接,获取歌曲图片,评论等等