喜马拉雅全站音频爬取
虽然这段代码不难, 但还是有人不自己写却把我写的代码放到网上来, 整理了一翻, 自己放一次
import json
import os
import re
import requestsdef xima():# 模拟浏览器headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"}# 拿到XX排行榜的所有关键字的urlurl_1 = "https://www.ximalaya.com/revision/getRankCluster"# 利用requests解析来得到源代码, 得到一个JSON类型的字符串json_1 = requests.get(url_1, headers=headers).content.decode()# 通过json模块来转换成Python的字典dict_1 = json.loads(json_1)# 从字典里面把上面写的XX排行的的关键字拿出来name_1 = dict_1['data']['list']for i in name_1:name = i['name'] # 终于拿到了print(name)# 就可以跟这个url拼接, 得到的url里面有所有书的id, 和名字url_2 = "https://www.ximalaya.com/revision/getRankList?code=" + name# 还是一样解析得到一个JSON数据json_2 = requests.get(url_2, headers=headers).content.decode()# 依然通过转换得到字典dict_2 = json.loads(json_2)# 从字典里面取到一个个的id和对应的名字for j in dict_2['data']['albums']:id_2 = j['id']title = j['albumTitle']title = re.sub('\?|"|\|', '', title) # 因为有的名字里面有通配符, 所以得换成空if not os.path.exists(title):os.mkdir(title) # 创建文件夹, 方便待会把这本书的所有音频存在进去# 有了id我们就可以进行拼接了, 这个链接里面就有每个音频的url. 但是有很多页, 所以我们得使用格式化点位符拼接得到每一页的urlurl_3 = "https://www.ximalaya.com/revision/play/album?albumId=" + str(id_2) + "&pageNum={}&sort=-1&pageSize=30"for i in range(50):url = url_3.format(i + 1) # 循环拼接成不同页的urltry:# 得到每一次的源代码, JSON类型json_3 = requests.get(url, headers=headers).content.decode()except Exception as e:print(e) # 因为我们循环了50次, 而有的书根本没有那么多页, 所有得try一下跳出循环continue# 又一次进行转换得到字典dict_3 = json.loads(json_3)n = 1# 终于可以从字典里面拿到音频的url了, 还有对应的名字for k in dict_3['data']['tracksAudioPlay']:src = k['src']name = k['trackName']print(src, name)name = re.sub('\?|"|\|', '', name) # 因为有的名字里面有通配符, 所以得换成空# 给每一个音频拼接名字,with open(title + '/' + str(i * 30 + n) + '%s.m4a' % name, 'ab') as f:r = requests.get(src, headers=headers)ret = r.content# 获取到音频的二进制文件保存起来才是音频文件f.write(ret)n += 1if __name__ == '__main__':xima()
喜马拉雅全站音频爬取相关推荐
- Python爬虫--喜马拉雅三国音频爬取
本文以爬取喜马拉雅"三国演义-原文朗读[四大名著]"一书为例,演示下Python爬虫. 原书地址:http://www.ximalaya.com/4228109/album/268 ...
- 16-爬虫之scrapy框架手动请求发送实现全站数据爬取03
scrapy的手动请求发送实现全站数据爬取 yield scrapy.Reques(url,callback) 发起的get请求 callback指定解析函数用于解析数据 yield scrapy.F ...
- Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题)
网易云歌单音频爬取 写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助. 爬取对象:对于目前主流的几个音频播放网站,我 ...
- 爬虫day5 易中天品三国音频爬取
# 易中天品三国音频爬取import requests from lxml import etree from urllib import parse,request base_url = 'http ...
- 【爬虫修炼和实战】二、从requests开始——爬取喜马拉雅全站音频数据(基础篇)
第二篇为利用爬虫基本的requests库和正则表达式爬取喜马拉雅全站数据. 申明:本文仅做学习用. 多图警告. 目录 一.常用函数和库 二.网站结构分析 首页 https://www.ximalaya ...
- 【Python爬虫系列教程 22-100】小姐姐教大家爬取喜马拉雅全站音频数据,探秘喜马拉雅的天籁之音
文章目录 一.前言 二.寻找音频的URL 三.请求参数的处理 四.重新分析目标网站 五.实现代码 六.爬取结果 一.前言 喜马拉雅FM是一个知名的音频分享平台,在移动音频行业的市场占有率已达73%,用 ...
- Python爬虫--喜马拉雅音频爬取
爬取喜马拉雅三国中的前十章音频: #导入requests模块 import requests #导入正则表达式 import re #解决反爬问题,导入UA header = { 'User-Agen ...
- python 喜马拉雅_Python爬虫入门教程14:喜马拉雅有声书音频爬取
基本开发环境????Python 3.6 Pycharm 相关模块的使用????import requests import os 安装Python并添加到环境变量,pip安装需要的相关模块即可. 一 ...
- python爬取喜马拉雅收费_python 爬取喜马拉雅节目生成RSS Feed
记录于:2020年12月03日 用了N年的手机在经历N次掉落之后终于扛不住了,后背都张嘴了,估计再摔一次电池都能飞出来. 换了手机,由于之前有听喜马拉雅的习惯,但是手机里自带有播客软件,强迫症逼着我不 ...
最新文章
- 自动化监控--zabbix中的show value详解
- python中的数据类型有哪些是可阅读,Python中典型的数据类型中哪个只能阅读不能修改...
- n个数里找出前m个数(或者 从10亿个浮点数中找出最大的1万个)
- Dubbo Mesh 在闲鱼生产环境中的落地实践
- python server client_python 实现简单client与server | 学步园
- C++ Qt学习笔记(2)简易计算器设计(为计算器添加菜单功能)
- 67% 为宽松许可证,2020 年开源许可证最新趋势来袭
- pytorch之BatchNorm
- 使用jsp:include嵌入页面的两种方式
- jquery 对象 和 js 对象 为什么要互相转换?_JQuery对象与dom对象两者之间的相互转换...
- 2012 国庆中秋黄金周流水帐
- springboot 整合 j2cache
- mysql 节假日判断,sql 节假日判断(春节、中秋、国庆、周末等)
- C语言绘图示例-调色板
- 前端开发者思考:假如5年后你是开发总监
- mac居家办公怎么连接公司内网,用tunnelblick
- 倪海厦天纪笔记16_倪海厦《天纪》——人间道听课笔记
- java实现word文件转图片,支持分页
- Myeclipse中@auther
- java生成二维码到文件,java生成二维码转成BASE64