吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4749|回复: 19
收起左侧

[Python 转载] python之音乐下载

[复制链接]
苹果刺客 发表于 2021-2-18 18:49
本帖最后由 苹果刺客 于 2021-2-18 18:50 编辑

[Python] 纯文本查看 复制代码
from tkinter import *

from selenium import webdriver
import os
from urllib.request import urlretrieve


def song_load(item):
    song_id = item['song_id']
    song_name = item['song_name']

    song_url = 'http://music.163.com/song/media/outer/url?id={}.mp3'.format(song_id)
    os.makedirs('down', exist_ok=True)
    path = 'down\{}.mp3'.format(song_name)
    text.insert(END, '歌曲:{},正在下载...'.format(song_name))
    text.see(END)
    text.update()

    urlretrieve(song_url, path)
    text.insert(END, '{}:下载完成'.format(song_name))
    text.see(END)
    text.update()


def get_music_name():
    name = entry.get()
    url = 'https://music.163.com/#/search/m/?s={}&type=1'.format(name)
    option = webdriver.ChromeOptions()
    option.add_argument('--headless')
    driver = webdriver.Chrome(chrome_options=option)
    # driver = webdriver.Chrome()
    driver.get(url)
    driver.switch_to.frame('g_iframe')

    # 此处获取歌曲id序列
    song_id_1 = driver.find_element_by_class_name('text')
    s = song_id_1.find_element_by_tag_name('a')
    song_id_2 = s.get_attribute('href')
    song_id = song_id_2.split('=', 2)[1]

    # print(song_id)

    # 此处获取歌曲名称
    song_name_1 = song_id_1.find_element_by_tag_name('a')
    song_name = song_name_1.find_element_by_tag_name('b').get_attribute('title')

    # print(song_name)
    driver.quit()
    item = {'song_id': song_id, 'song_name': song_name}
    song_load(item)


# get_music_name()

root = Tk()
root.title('网易云音乐下载')
root.geometry("400x380+200+180")

label = Label(root, text='大哥~想听啥呢:', font=20)
label.grid()

entry = Entry(root, font=20)
entry.grid(row=0, column=1)

text = Listbox(root, font=20, width=50, height=18)
text.grid(row=1, columnspan=2)

button = Button(root, text='下载', font=20, command=get_music_name)
button.grid(row=2, column=0, sticky=W)
button1 = Button(root, text='退出', font=20, command=root.quit)
button1.grid(row=2, column=1, sticky=E)

root.mainloop()

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
cmy2019 + 1 + 1 用心讨论,共获提升!
hshcompass + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

cmy2019 发表于 2021-2-19 11:43
本帖最后由 cmy2019 于 2021-2-19 11:45 编辑
苹果刺客 发表于 2021-2-19 09:32
那样的话需要抓包了应该,
目前还不会呢

我也想搞这个来着,就是js逆向太难了,得js基础很好才能分析出来
这里推荐一个爬虫题的网站:http://www.glidedsky.com/
里边的题从易到难,我估计要是能熟练做完这些题,一般的爬虫应该不在话下了
cmy2019 发表于 2021-2-18 18:58
selenium性能还是太低了,能逆向找出接口是最好
hshcompass 发表于 2021-2-18 19:27
记忆不寒凉 发表于 2021-2-18 19:28
看着不错啊,先做个标记啊啊
gunxsword 发表于 2021-2-18 19:38
感谢分享!
查理76 发表于 2021-2-18 19:43
谢谢!学习!
 楼主| 苹果刺客 发表于 2021-2-18 20:37

我也是初学者,相互交流,共同进步
87720108 发表于 2021-2-18 20:45

看着不错啊,先做个标记啊啊
龍謹 发表于 2021-2-18 20:48
谢谢分享,刚开始学习'PY,收藏了。
TianXian 发表于 2021-2-18 20:51
找不到selenium模块,是不是需要自己安装才能使用。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 11:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表