栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

PYTHON示例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PYTHON示例

学习目标:

闲来无事,想着用python获取音乐并下载,代码一共30几行吧。python3.9,pycharm2017


学习内容:

首先导入所需要的包:

import requests
import re

url就是某云的url。直接百度即可,很容易得到。然后爬取源代码。但是有个页面源代码和框架源代码(鼠标右击即可看见),我们所要的数据全都在框架源代码里面,所以别弄错了。

url:

 

 注意页面源代码和框架源代码的url的区别!!!我们要的是框架源代码。

获取目标url:

url=xxx

然后发起请求,获得响应

resp=requests.get(url) 

print(resp.text)#可以将其输出,然后在控制台里面可以ctrl+f,然后输入歌曲名,确认所需要的 信息是否在resp.text里面

然后利用正则表达式来提取信息,这里本来是想用xpath的,但我试了很久,用xpath一直提取不出来,所以只能用re了,虽然麻烦了点,但还是获取到了数据。

obj0=re.compile(r'歌曲列表.*?
    (?P
  • .*?)
',re.S) obj1=re.compile(r'
  • .*?)">(?P.*?)
  • ',re.S) result=obj0.finditer(resp.text)

    这里obj0起到了一个缩小范围的作用,将我所需要的信息从大的resp.text里面分离出来,然后在用obj1从result里面提取到我所需要的具体的信息,如下:

    dict_song={}
    for i in result:
        li=i.group('li')
        res=obj1.finditer(li)
        print('---------------------------')
        for m in res:
            dict_song[m.group('id')]=m.group('name')

    这里我将歌曲id和歌曲名做成了一个字典,方便后续使用,下面就开始下载,这里需要用到外部链接获取音乐资源,常用的链接在网上可以找到,找不到的可以联系我。

    下载代码:

    for a in dict_song.keys():
        mu_url='https://link.hhtjim.com/163/'+a.replace('/song?id=','')+'.mp3'
        #print(mu_url)
        music=requests.get(mu_url).content
        print('正在下载:{}'.format(dict_song[a]))
        with open('./music/'+dict_song[a]+'.mp3','wb') as f:
            f.write(music)
        print('-----------------------{}下载完成-----------------------'.format(dict_song[a]))
    
    print('--------------总的下载完成---------------------------------')

    这里要提前在当前目录下创建一个music的文件夹,不然会报错,当然也可以使用os命令来判断并且自动生成文件夹,这里为了避免麻烦就自己创建了。然后就可以运行了:

     现在将完整代码放在这里,纯属无聊练手,后面还可以写成面向对象,增加拓展性,欢迎探讨交流!

    import requests
    import re
    
    url="https://music.163.com/discover/toplist?id=3778678"
    resp=requests.get(url)
    
    obj0=re.compile(r'歌曲列表.*?
      (?P
    • .*?)
    ',re.S) obj1=re.compile(r'
  • .*?)">(?P.*?)
  • ',re.S) result=obj0.finditer(resp.text) li_list=[] dict_song={} for i in result: li=i.group('li') res=obj1.finditer(li) print('---------------------------') for m in res: dict_song[m.group('id')]=m.group('name') for a in dict_song.keys(): mu_url='https://link.hhtjim.com/163/'+a.replace('/song?id=','')+'.mp3' #print(mu_url) music=requests.get(mu_url).content print('正在下载:{}'.format(dict_song[a])) with open('./music/'+dict_song[a]+'.mp3','wb') as f: f.write(music) print('-----------------------{}下载完成-----------------------'.format(dict_song[a])) print('--------------总的下载完成---------------------------------')

    学习产出:

    无

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/995034.html
    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号