》》》内容基本框架:
1.爬虫目的
2.爬取过程
3.代码实现
4.爬取结果 
》》》实验环境:
python3.6版本,pycharm,电脑可上网。

【一 爬虫目的】对喜马拉雅上一个专辑的音频进行爬取并保存到本地

要爬取的喜马拉雅音频数据如下所示:

每页30个音频,共x页。

【二 爬取过程】

》》》F12打开谷歌功能,点击Network选项:

F5刷新后,随便点击一个音频进行播放(这里特别注意)

找到我们要爬取的页面数据的url地址:https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum=1&sort=-1&pageSize=30

【三 代码实现】

#!/usr/bin/env python
# coding:utf-8
# Time:2018-8-14
# Author:ForYouimport requests
import json
import re
# import lxml# 是“吴晓波频道”的前3页数据源代码:
"""
https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum=1&sort=-1&pageSize=30
https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum=2&sort=-1&pageSize=30
https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum=3&sort=-1&pageSize=30
"""
class Xima(object):# def __init__(self, book_name):def __init__(self, book_name):# 模拟浏览器self.headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"}# self.book_name = "复旦女神教师陈果的幸福哲学课"self.book_name = book_name# 这里肯定是存在问题的!# self.start_url = "https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum={}&sort=-1&pageSize=30"self.start_url = "https://www.ximalaya.com/revision/play/album?albumId=269179&pageNum={}&sort=-1&pageSize=30"# self.start_url = "https://www.ximalaya.com/revision/play/album?albumId=6419495&pageNum=1&sort=-1&pageSize=30"self.book_url = []for i in range(2): # 先爬取3页;url =self.start_url.format(i + 1)self.book_url.append(url)print(self.book_url)def get_book_msg(self):"""从当前url获取到返回的数据,并且取到音频中的url和当前应音频的名字:return:"""all_list = []for url in self.book_url:r = requests.get(url, headers=self.headers)# r.content.decode()是请求当前url得到的俄数据,是一个json类型字符串# python_dict是通过json.loads()把json类型字符串变为python的字典pythpon_dict = json.loads(r.content.decode())book_list = pythpon_dict["data"]["tracksAudioPlay"]# m = 1for i in book_list:# print(("{}"+". "+i["trackName"]+" "+i["src"]).format(m))# m += 1list = {}list["index"] = i["index"]list["name"] = i["trackName"]list["src"] = i["src"]all_list.append(list)return all_listdef save(self, all_list):"""保存音频文件"""for i in all_list:# i实际上就是我们每一个音频的名字和url# with open(r"D:\喜马拉雅音频下载\{}.m4a".format(self.book_name + i["index"]+". "+i["name"],'ab') ) as f:# with open(r"D:\喜马拉雅全集音频下载\{}.m4a".format(self.book_name + "{}".format(i["index"])+'. '+i["name"]), 'ab') as f:# 特别注意:******re.sub('"|\|:|', '', i['name']) # 这个在爬虫时很重要!******with open(r"D:\xima\{}.m4a".format(self.book_name + ' '+ str(i["index"])+i["name"]),'ab') as f:r = requests.get(i["src"], headers=self.headers)# 通过请求音频的url得到音频的二进制数据,然后把二进制数据保存到本地print("正在保存第{}条信息".format(i["index"]))  # 这句有问题!
                f.write(r.content)def run(self):all_list = self.get_book_msg()self.save(all_list)if __name__== '__main__':xima = Xima('吴晓波频道')# xima = Xima(id, name) # ??
    xima.get_book_msg()xima.run()

View Code

【四 爬取结果】

音频数据已经保存到本地:

The end!

**************************************************************************************************
Good lucky to you
**************************************************************************************************

转载于:https://www.cnblogs.com/520ZXL/p/9508198.html

【python爬虫】对喜马拉雅上一个专辑的音频进行爬取并保存到本地相关推荐

  1. Python爬虫 | 对广州市政府数据统一开放平台数据的爬取

    Python爬虫 | 对广州市政府数据统一开放平台数据的爬取 简单爬虫 网页分析 爬虫代码 简单爬虫 本次爬虫演示的是对 广州市政府数据统一开放平台 数据的爬取 网页分析 我们先到url=' http ...

  2. Python爬虫新手入门教学(十五):爬取网站音乐素材

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  3. Python爬虫新手入门教学(十八):爬取yy全站小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  4. Python爬虫系列之多多买菜小程序数据爬取

    Python爬虫系列之多多买菜小程序数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代码仅供学习交流, ...

  5. Python爬虫系列之MeiTuan网页美食版块商家数据爬取

    Python爬虫系列之MeiTuan网页美食版块商家数据爬取 小程序爬虫接单.app爬虫接单.网页爬虫接单.接口定制.网站开发.小程序开发> 点击这里联系我们 < 微信请扫描下方二维码 代 ...

  6. Python爬虫新手入门教学(二十):爬取A站m3u8视频格式视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 前文内容 Python爬虫新手入门教学(一):爬取豆瓣电影排行信息 Python爬虫新手入门 ...

  7. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  8. Python爬虫新手入门教学(十六):爬取好看视频小视频

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. Python爬虫.数据分析.网站开发等案例教程视频免费在线观看 https://space. ...

  9. python爬虫和数据分析的书籍_豆瓣书籍数据爬取与分析

    前言 17年底,买了清华大学出版社出版的<Hadoop权威指南>(第四版)学习,没想到这本书质量之差,超越我的想象,然后上网一看,也是骂声一片.从那个时候其就对出版社综合实力很感兴趣,想通 ...

最新文章

  1. tomcat server.xml中文版
  2. QIIME 2教程. 24Python命令行模式Artifact API(2021.2)
  3. MySQL-MMM实现MySQL高可用
  4. [译]高效的TensorFlow 2.0:应用最佳实践以及有什么变化
  5. opengl光照效果_【图形学基础 | Shader】Blinn-Phong 光照模型
  6. 170万奖金扶持 华为云究竟在下一盘怎样的棋?
  7. css3学习 理论之渐变
  8. window.open参数完全手册
  9. 使用Chrome的inspect element注意事项
  10. 华为云VSS漏洞扫描服务之开源组件漏洞检测能力
  11. 蔬菜基地售卖系统stage1
  12. visual studio 使用快捷方法2
  13. Asp.net mvc中Controller的返回值
  14. tomcat配置重定向_在Tomcat上配置SSL以及从HTTP到HTTPS的设置自动重定向的步骤
  15. sql 返回日期的年月部分_2019年要上映的部分热门电影及上映日期
  16. 分类问题的评价指标(Precision、Recall、Accuracy、F1-Score、Micro-F1、Macro-F1)以及混淆矩阵、ROC曲线
  17. 管理感悟:一种招聘考试的想法
  18. Python实现基于负熵最大判据的FastICA胎心信号分离
  19. kubernetes之容器生命周期管理
  20. 隐藏Ubuntu 18.04 顶部通知栏( hide top bar)

热门文章

  1. Nginx的HTTP Code444和307设置
  2. 红米note7 note3 note4x 手机屏幕驱动板HDMI接口
  3. java向Word模板中替换书签数据,插入图片,插入复选框,插入Word中表格的行数据,删除表格行数据
  4. Java中如何将int 类型转换为 Long类型
  5. php 邮件发送检测,php发邮件测试
  6. 蒲公英上传应用后推送消息到钉钉、微信、QQ
  7. 中国程序员都不生产代码,只是代码的搬运工?
  8. 项目连接不了mysql_关于Java项目中连接mysql失败的几种情况原因分析
  9. CF716B Complete the Word
  10. cocos2dx项目中应用ttf字体