在之前的一些文章之中小编已经给大家介绍过了python是如何去抓取图片和小说的,那么音频这种媒体文件在多种文件类型内都是比较特殊的 。这篇文章就会以实际的代码示例来讲解一下python爬虫是如何爬取音乐下载的,一起往下看看吧 。
【Python如何爬取音频文件?Python爬虫抓取音乐怎么写】
文章插图
1.python要抓取音频文件来下载的话主要流程就是先访问网站来将歌手的歌曲列表以及链接都取到然后保存在csv文件之中,在循环csv文件来调用接口分分别的将歌词和音频文件给下载下来 。而为了突破网站的反爬机制就用Selenium来跳过它从而直接得到数据,代码如下:
br
owser.switch_to.frame('contentFrame')data = browser.find_element_by_id("hotsong-list").find_elements_by_tag_name("tr")2.得到数据还需要使用for循环迭代来将音乐的名称和链接进行解析,在对数据进行清洗之后才能够获得实际上可以直接去请求的链接,示例如下:
for i in range(len(data)): content = data[i].find_element_by_class_name("txt") href = content.find_element_by_tag_name("a").get_attribute("href") title = content.find_element_by_tag_name("b").get_attribute("title") song_info.append((title, href))3.那么在有了音乐链接之后就要去将歌词下载下来了,因为在歌词之中是有时间轴来控制歌词的顺序以及输出时间的 。要使用正则表达式将时间轴给去除掉,这样才能够获取到没有任何因素影响的歌词,代码如下所示:
def get_lyric(self): url = 'http://music.163.com/api/song/lyric?' + 'id=' + str(self.song_id) + '&lv=1&kv=1&tv=-1' r = requests.get(url) json_obj = r.text j = json.loads(json_obj) lyric = j['lrc']['lyric'] regex = re.compile(r'[.*]') final_lyric = re.sub(regex, '', lyric) return final_lyric4.最后一步就是通过链接去将音频文件给下载来就可以了,因为音乐网站以及提供了可以去下载音频文件的api接口 。所以只需要直接通过这个接口将不同音频文件的链接传进去请求下载就好了,代码如下:
def get_mp3(self): url = 'http://music.163.com/song/media/outer/url?id=' + str(self.song_id)+'.mp3' try: print("正在下载:{0}".format(self.song_name)) urllib.request.urlretrieve(url, '{0}/{1}.mp3'.format(self.path, self.song_name)) print("Finish...") except: print("Fail...")以上就是关于“Python如何爬取音频文件?Python爬虫抓取音乐怎么写”的全部内容了,希望对你有所帮助 。
推荐阅读
- 进行Django操作之前有什么准备工作?python中的Django搭建前准备
- python为什么会有Django的出现?Django的作用是什么?
- Python中单步调试是什么意思?Python怎么单步调试
- Python如何用变量给文件命名?Python怎么将变量作为文件名
- Python如何保存文件到桌面?Python文件保存到桌面怎么做
- python有无查找程序错误的函数?python查找程序错误函数讲解
- 如何将Python列表转换为字符串?列表转换为字符串的方法
- 如何使用Python进行MongoDB操作?python连接MongoDB数据库的方法
- 运动减肥时如何选择衣服
- 如何开花店?开个普通小花店流程怎样?