Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

一,简单介绍python

1.众所周知,python在近几年可以说是非常火爆,在受欢迎排名上经常位于前列

2017年IEEE Spectrum 最新的研究报告

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

2018年TIOBE 刚刚发布了 6 月编程语言排行榜

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

2.百科简单介绍

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。

Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。等等。

3.python优势及推荐视频

Python相对于其他语言有以下的优势:

1、Python易于学习

2、Python让你能用少量的代码构建出更多的功能

3. Python是一门多才多艺的语言,似乎每个领域都可以使用:系统操作,Web开发,部署,科学建模等,大抵找不出第二个更多才多艺的语言了。

4.Python拥有最成熟的程序包资源库之一

5.Python在数据科学领域被广泛使用

Python教学视频:

1.    腾讯课堂上的马哥教育视频

2.    廖雪峰的python教程网站

3.    B站上的python视频(小甲鱼零基础入门学习)

4.    有问题也可以上博客知乎等查找资料

二,爬虫过程(抓取喜马拉雅网站的音乐并下载在文件夹上)

1.实验环境

win10,pycharm,python3.6,火狐浏览器

2.添加相关库

打开pycharm

点击设置

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

点击项目解释器,再点击右边+号

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

搜索相关库并添加,例如:requests

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

新建文件

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

用火狐浏览器打开喜马拉雅网站,再点击音乐,可以得到喜马拉雅音乐模块的url

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

点击流行和摇滚,我们可以观察并发现https://www.ximalaya.com/yinyue/与搜索内容拼音组合即使是搜索结果的url

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)


Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

然后我们发现未点击播放时抓取的信息的页面:

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

点击播放后的页面:

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

所以我们会发现多出get方法的一个json文件

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

观察上面两张图片:浏览这个json

并在浏览器打开这个网址:

https://www.ximalaya.com/revision/play/album?albumId=391242&pageNum=1&pageSize=30

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

观察可知,可以看到albumId,还有音频文件url:

"http://audio.xmcdn.com/group12/M03/2C/AA/wKgDW1WJ7GqxuItqAB8e1LXvuds895.m4a"

访问搜索界面的源代码,查找albumId,通过这些albumid获取音频文件的url

最后使用函数urllib.request.urlretrieve()下载音乐

效果如下:

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

文件夹里下载好的歌曲:

Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)

具体代码:

import requests
import re        #正则表达式
import urllib   #下载音乐的库
from pypinyin import pinyin, lazy_pinyin
import pypinyin         #转为拼音的库
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0'} ##伪装成浏览器

def Pinyin(search):       #输入要查找的内容0
    l=lazy_pinyin(search)   #字符串转化为拼音
    str1 = "".join(l)
    return str1

def SearchHtml(str,header):             #获取搜索得到的html
    url= 'https://www.ximalaya.com/yinyue/'+str
    #print(url)
    html=requests.get(url,headers=header)
    #print(html.status_code)
    html.encoding=html.apparent_encoding
    #print(html.text)
    return html

#"albumId":3961176,"title":"六喜珠宝-车载音乐 欧美乡村民谣"

def albumId(html):             #获取albumId的值 并将albumId与https://www.ximalaya.com/revision/play/album?albumId=组合json的url
    d=re.findall(r'"albumId":(.*?),',(html).text)
    url3=[]

    for x in (d[:1]):
        url2='https://www.ximalaya.com/revision/play/album?albumId='+x
        html2=requests.get(url2,headers=header)
#src   "http://audio.xmcdn.com/group12/M03/2C/AA/wKgDW1WJ7GqxuItqAB8e1LXvuds895.m4a"
        url3=(re.findall(r'"src":"(.*?)"',(html2).text))
    return url3

def title(html):
    t=re.findall(r'"title":"(.*?)"',(html).text)    #获取titile(歌名)的值
    return t

def Download(url,title):    #下载音乐
    n=0
    for y in url:
        try:
            print("正在下载——"+str(t[n]))
            urllib.request.urlretrieve(y,r'D:\zachary\喜马拉雅音乐\\'+str(t[n]+'.m4a'))
            print("下载——"+str(t[n])+"——成功")
            n=n+1
        except:
            print("下载——"+str(t[n])+"——失败")

str1=Pinyin('摇滚')
html=SearchHtml(str1,header)
t=title(html)
url3=albumId(html)
Download(url3,t)

三,结尾

谢谢各位观看。如有错误的地方,非常欢迎大家通知改正。谢谢。


Python3简单爬虫之下载相关类型音乐(喜马拉雅网站)