现在知识版权比较认真,以下内容仅供学习时练手用。
爬取某网站歌曲 url= http://music.taihe.com/
源码如下:
# -*- coding: UTF-8 -*-
#http://music.taihe.com/
import requests
import re
class climb():
def __init__(self):
#示例输入:242078437
self.task1=input("如果下载某一首歌曲请输入该歌曲,否则1:")
# url="http://music.taihe.com/artist/7994?pst=sug"
self.task2=input("如果下载某网页所有歌曲,请输入网页:")
def get_songid_list(self,url):
# url="http://music.taihe.com/artist/7994?pst=sug"
respond=requests.get(url)
respond.encoding=respond.apparent_encoding
# print(respond.text)
list=re.findall('data-songid="(\d+)"',respond.text)
list=set(list) #去重
#逐一下载
for i in list:
self.getsong(i)
def getsong(self,songid):
#歌曲地址
url="http://musicapi.taihe.com/v1/restserver/ting?method=baidu.ting.song.playAAC&format=jsonp&songid=%s&from=web&_=1546260415038"%songid
resspond = requests.get(url)
# resspond.encoding=resspond.apparent_encoding 自动解决乱码可选
json_respond=resspond.json()
print(json_respond['bitrate']['file_link'])
print(json_respond['songinfo']['title'])
self.downfile(json_respond['bitrate']['file_link'],json_respond['songinfo']['title'])
def downfile(self,url,music_name):
music_response=requests.get(url)
with open(r"E:\\untitled\\音乐\\"+music_name+".mp4",mode='wb')as f:
f.write(music_response.content)
print("下载"+music_name)
def main_function(self):
if self.task1!= "1":
self.getsong(self.task1)
elif self.task2 != None:
self.get_songid_list(self.task2)
if __name__ == '__main__':
do=climb()
do.main_function()
以上代码可以单一下载某一歌曲,也可以下载整个歌单,当然有心的再琢磨下如何翻页吧,宝宝累。