import requests # from beautifulSoup import BeautifulSoup from bs4 import BeautifulSoup from urllib import request import requests import re from bs4 import BeautifulSoup from pprint import pprint import urllib, time def get_content(url): headers = { 'Host': 'music.163.com', 'Referer': 'https://music.163.com/', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36' } r = requests.session() r = BeautifulSoup(r.get(url, headers=headers).content, "html.parser") return r # 保存 def save(r): music_dict = {} result = r.find('ul', {'class': 'f-hide'}).find_all('a') # print(result) for music in result: music_dict[music['href'].strip("/song?id=")] = music.text # for k, v in src_dict.items(): # print(k, v) return music_dict # 下载音乐如:http://music.163.com/song/media/outer/url?id=534544522.mp3 def download_song(song_id, music_dict): try: song_url = 'http://music.163.com/song/media/outer/url?id=%s.mp3' % song_id # 该链接为浏览器在网页版缓存歌曲的下载链接 music_n = re.sub('\\.*?(\W)', '', music_dict[song_id]) # 去掉歌名括号 urllib.request.urlretrieve(song_url, 'D:\\spider\\%s.mp3' % music_n) time.sleep(0.9) print("{}下载完成!".format(music_dict[song_id])) except KeyError: print("请确认歌曲id是否正确或者歌曲是否收费。") # 歌名 ID 写入文件 def write(music_dict): fp = open('music1.txt', 'a',errors='ignore') for k, v in music_dict.items(): fp.write(music_dict[k] + "\r\n" + "id:" + k + "\r\n") fp.close() # 启动 if __name__ == '__main__': # url = 'https://music.163.com/playlist?id=2252736518' url = 'https://music.163.com/playlist?id=2153548870' for i in range(10): r = get_content(url) music_dict = save(r) pprint(music_dict) write(music_dict) print("---------------------") while True: for song_id,music_name in music_dict.items(): print("正在搜索{}并下载.".format(music_name)) download_song(song_id, music_dict)
python爬虫-网易云音乐
最新推荐文章于 2024-05-16 14:42:12 发布