【网易云音乐爬取】输入下载链接,爬取音乐。
本帖最后由 guoqc3 于 2020-11-13 11:32 编辑一个简单的爬取网易云的小程序。
#!usr/bin/env python
#-*- coding:utf-8 _*-
'''
@author:
@file: 爬取网易云.py
'''
import urllib
from urllib import request
import requests
import re
import threading
import tkinter
headers={
"Host":"music.163.com",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
"Referer":"https://music.163.com/",
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5702.400 QQBrowser/10.2.1893.400",
}
def getMusic(musicList):
musicId=musicList[0]
musicname = musicList[1]
musicUrl = "http://music.163.com/song/media/outer/url?id={}.mp3".format(musicId)
# print(musicUrl)
# url11 = "http://music.163.com/song/media/outer/url?id=436514312.mp3"
req = urllib.request.Request(musicUrl)
req.add_header('User-Agent', "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5702.400 QQBrowser/10.2.1893.400")
res = urllib.request.urlopen(req).read()
# res = urllib.request.urlopen(musicUrl).read()
# print(res)
with open('./歌曲/{}.mp3'.format(musicname), 'wb') as f:
f.write(res)
print(musicname+"下载完成")
def save_musci(musicname,id):
musicUrl = "http://music.163.com/song/media/outer/url?id={}.mp3".format(id)
with open('./歌曲/{}.mp3'.format(musicname), 'wb') as f:
res = urllib.request.urlopen(musicUrl).read()
f.write(res)
var=musicname+"下载完成"
print(var)
# t3.insert("end",var)
def get_musciId():
try:
url=musicUrl.get()
yid3= '.*?id=(.*)$'
urlc3 = re.compile(yid3)
num=urlc3.findall(url)[0]
# print(num)
musciId="https://music.163.com/artist?id={}".format(num)
# print(musciId)
respones=requests.get(url=musciId,headers=headers).content.decode("utf-8")
yid = 'href=.*?id=({4,})">(.*?)</a>'
urlc = re.compile(yid)
musicId=urlc.findall(respones)
tList=[]
# getMusic(musicId)
for i in musicId:
# getMusic(i)
t=threading.Thread(target=getMusic,args=(i,))
tList.append(t)
t.start()
for t in tList:
t.join()
exceptException as e:
t3.insert("end","连接有误请确认")
if __name__=="__main__":
win=tkinter.Tk()
win.title("网易云音乐爬取")
win.geometry("600x500+600+100")
music_url=tkinter.Label(win,text='要下载歌手的连接:',width=50,font=('Arial',25))
# e = tkinter.Entry(win,show=None)
music_url.pack()
musicUrl = tkinter.StringVar()
entry_usr_name = tkinter.Entry(win,textvariable=musicUrl,width=40)
entry_usr_name.pack()
b1 = tkinter.Button(win,text='下载歌手全部歌曲',width=15,height=2,command=get_musciId)
b1.pack()
t3 = tkinter.Text(win,height=20)
t3.pack()
win.mainloop()
# url="http://music.163.com/api/song/lyric?id=449818741&lv=1&kv=1&tv=-1"
增加打包好的exe单文件,见下面百度云,注意和exe同目录需要有个img的文件夹,然后输入的网址是歌手的网址,例如张学友歌曲:https://music.163.com/#/artist?id=6460
链接:https://pan.baidu.com/s/1FmnONYziCHYfgX-abjwSlg
提取码:hz25
复制这段内容后打开百度网盘手机App,操作更方便哦
不行啊,大佬
试了很多次 求大神提供小程序软件 之子之一 发表于 2020-11-12 19:27
不行啊,大佬
试了很多次
是指根据歌手进行下载歌曲,比如下载张学友的歌曲。你把这个连接黏贴进去试试。
https://music.163.com/#/artist?id=6460
我本地实测是可以的。 2306 发表于 2020-11-12 22:50
求大神提供小程序软件
打包好的单个exe文件已经发布,等待审核完成就可以看到,按照说明进行即可。 复制链接后,点击下载没有反应啊。是不是没有设置下载地址?
好了,歌曲在IMG里面 东西很好用,如果能爬虫歌单,就更赞了。试了下,歌单不行。 过来凑个热闹 看看 好不好用 强烈支持,感谢分享。
页:
[1]
2