爬虫類は大量にクールな私の音楽をダウンロードします(クールな私の音楽のクライアントを使います)
2820 ワード
0 x 01注意点
標準json文字列はjson.loads(result)変換、中には多くのコロンがあり、二重引用符でオンラインで簡単に観察できます.https://www.json.cn/
単一引用符は標準jsonではありません.これは処理方式の違いを決定します.loadsは二重引用符で辞書を回転します.evalは単一引用符で辞書を回転します.
0 x 02使用概要
name_リストに歌手の名前を入れてmusic関数は音楽をダウンロードします.原理は聴くときに手に入れたリンクなので、音質はあまり高くありません.ダウンロードした音楽はaac形式の音楽プレーヤーで開くことができます.にダウンロードされます./music/歌手名カタログ下
このエラーは、ネットワークのせいか、ローカルネットワークが通じないか、ipが閉鎖されているかのいずれかです.
0 x 03コード
標準json文字列はjson.loads(result)変換、中には多くのコロンがあり、二重引用符でオンラインで簡単に観察できます.https://www.json.cn/
単一引用符は標準jsonではありません.これは処理方式の違いを決定します.loadsは二重引用符で辞書を回転します.evalは単一引用符で辞書を回転します.
hot_songs = json.loads(result)
songs=eval(music_list)
0 x 02使用概要
name_リストに歌手の名前を入れてmusic関数は音楽をダウンロードします.原理は聴くときに手に入れたリンクなので、音質はあまり高くありません.ダウンロードした音楽はaac形式の音楽プレーヤーで開くことができます.にダウンロードされます./music/歌手名カタログ下
name_list=[" "]
for name in name_list:
download_music(name)
このエラーは、ネットワークのせいか、ローカルネットワークが通じないか、ipが閉鎖されているかのいずれかです.
ConnectionResetError: [Errno 104] Connection reset by peer
0 x 03コード
# -*- coding:utf-8 -*-
import requests
import time
import urllib
import os
def get(url):
response=requests.get(url)
response.encoding=response.apparent_encoding
return response.text
# , ( 0 ),rn
def search_by_name(name,pn=0,rn=100):
url="https://search.kuwo.cn/r.s?pn="+str(pn)+"&rn="+str(rn)+"&all="+name+"&ft=music&newsearch=1&alflac=1&itemset=web_2013&client=kt&cluster=0&vermerge=1&rformat=json&encoding=utf8&show_copyright_off=1&pcmp4=1&ver=mbox&plat=pc&vipver=MUSIC_9.0.2.0_PQ&devid=51016591&newver=1"
music_list=get(url)
songs=eval(music_list)['abslist']
for song in songs:
#
song_name=song["SONGNAME"].replace(" "," ")
song_id=song["MUSICRID"].replace("MUSIC_","")
yield song_name,song_id
# json
# json json.loads(result) , :
# result = music_list
# hot_songs = json.loads(result)["hotsong"] #
# for hot_song in hot_songs:
# song_name = hot_song["name"]
# print(song_name)
yield song_name
#
def search_by_music(song_id):
url="http://antiserver.kuwo.cn/anti.s?rid=MUSIC_"+song_id+"&format=aac|mp3&type=convert_url&response=url"
print(url)
return get(url)
#
def search_lirycs_name(song_id):
url="http://www.kuwo.cn/play_detail/"+song_id
return get(url)
def download_music(name=" "):
path="./music/"+name
music_names=search_by_name(name)
for name in music_names:
os.makedirs(path,exist_ok=True)
song_url=search_by_music(name[1])
# song_lirycs=search_lirycs_name(name[1])
print(name[0],song_url)
urllib.request.urlretrieve(song_url, path +"/"+ name[0]+".aac")
if __name__=="__name__":
name_list=[" "]
for name in name_list:
download_music(name)