python爬虫-喜马拉雅_晚安妈妈睡前故事
这里先说下思路:
1、首先要获取当前书的音频信息
'''获取当前书的音频信息'''
all_list = []
for url in self.book_url:
r = requests.get(url, headers=self.headers)
ret = r.content.decode()
# ret通过requests请求得到的网页源代码,是一个json数据类型
pyhton_dict = json.loads(ret) # 通过json.loads(ret)把ret这个json类型的字符串变成python的dict
# print(pyhton_dict)
pythonData = pyhton_dict['data']['tracksAudioPlay']
# print(pythonData)
for book in pythonData:
# 取出每个音频的播放地址和名字
list = {}
list['src'] = book['src']
list['name'] = book['trackName']
print(list)
all_list.append(list)
return all_list # 所有音频的信息,只是一个list
2、然后遍历保存
for i in all_list:
# 遍历每个音频,保存
print(i)
i['name'] = re.sub('"', '', i['name']) # 如果有文件名称是"结尾,需要改成空
with open('D:\\xima\\{}.m4a'.format(self.name + i['name']), 'ab') as f: # wb会覆盖之前数据,ab不覆盖保存
r = requests.get(i['src'], headers=self.headers)
ret = r.content
f.write(ret)
print("下载完毕")
3、最后直接上代码啦!
import requests
from lxml import etree
import re
import json class Xima(object): def __init__(self, name):
self.name = name
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.139 Safari/537.36"
}
self.start_url = "https://www.ximalaya.com/revision/play/album?albumId=260744&pageNum={}&sort=-1&pageSize=30" # {} 占位
self.book_url = []
for i in range(30):
url = self.start_url.format(i+1) # format格式插入
self.book_url.append(url)
print(self.book_url)
print(len(self.book_url)) def get_book_msg(self):
'''获取当前书的音频信息'''
all_list = []
for url in self.book_url:
r = requests.get(url, headers=self.headers)
ret = r.content.decode()
# ret通过requests请求得到的网页源代码,是一个json数据类型
pyhton_dict = json.loads(ret) # 通过json.loads(ret)把ret这个json类型的字符串变成python的dict
# print(pyhton_dict)
pythonData = pyhton_dict['data']['tracksAudioPlay']
# print(pythonData)
for book in pythonData:
# 取出每个音频的播放地址和名字
list = {}
list['src'] = book['src']
list['name'] = book['trackName']
print(list)
all_list.append(list)
return all_list # 所有音频的信息,只是一个list def save(self, all_list):
print("开始下载")
for i in all_list:
# 遍历每个音频,保存
print(i)
i['name'] = re.sub('"', '', i['name']) # 如果有文件名称是"结尾,需要改成空
with open('D:\\xima\\{}.m4a'.format(self.name + i['name']), 'ab') as f: # wb会覆盖之前数据,ab不覆盖保存
r = requests.get(i['src'], headers=self.headers)
ret = r.content
f.write(ret)
print("下载完毕") def run(self):
all_list = self.get_book_msg()
self.save(all_list) if __name__ == "__main__":
xima = Xima('晚安妈妈睡前故事')
xima.run()
python爬虫-喜马拉雅_晚安妈妈睡前故事的更多相关文章
- PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)
说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...
- python爬虫(一)_爬虫原理和数据抓取
本篇将开始介绍Python原理,更多内容请参考:Python学习指南 为什么要做爬虫 著名的革命家.思想家.政治家.战略家.社会改革的主要领导人物马云曾经在2015年提到由IT转到DT,何谓DT,DT ...
- Python爬虫(九)_非结构化数据与结构化数据
爬虫的一个重要步骤就是页面解析与数据提取.更多内容请参考:Python学习指南 页面解析与数据提取 实际上爬虫一共就四个主要步骤: 定(要知道你准备在哪个范围或者网站去搜索) 爬(将所有的网站的内容全 ...
- Python爬虫(十一)_案例:使用正则表达式的爬虫
本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起 ...
- Python爬虫(十三)_案例:使用XPath的爬虫
本篇是使用XPath的案例,更多内容请参考:Python学习指南 案例:使用XPath的爬虫 现在我们用XPath来做一个简单的爬虫,我们尝试爬取某个贴吧里的所有帖子且将该帖子里每个楼层发布的图片下载 ...
- 【转】Python爬虫(5)_性能相关
爬虫性能相关 一 背景知识 爬虫的本质就是一个socket客户端与服务端的通信过程,如果我们有多个url待爬取,采用串行的方式执行,只能等待爬取一个结束后才能继续下一个,效率会非常低. 需要强调的是: ...
- Python爬虫(十)_正则表达式
本篇将介绍python正则表达式,更多内容请参考:[python正则表达式] 什么是正则表达式 正则表达式,又称规则表达式,通常被用来检索.替换那些符合某个模式(规则)的文本. 正则表达式是对字符串操 ...
- 【转】Python爬虫(1)_基本原理
一 爬虫是什么 #如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的猎物/数据 #爬虫指的是:向网站发起请求,获取资源后分析并提取有用数据的程 ...
- Python爬虫--喜马拉雅三国音频爬取
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Botreechan 1.进入地址我们可以发现,页面有着非常整齐的目 ...
随机推荐
- 控制论模型&心流模型&波模型
1.控制论模型 这是对设定的目标,通过多次输入和输出,反馈调节,最终达成目标的方法.广泛运用于自然科学与社会科学中.反馈的周期长短决定了调节精度的大小以及达到目标的速度.反馈结果与目标背离的立即纠正, ...
- Monkey框架(基础知识篇) - monkey启动与参数介绍
一.monkey启动 直接PC启动:> adb shell monkey [options] <count> shell 端启动:> adb shell >monkey ...
- 【软工实践】Beta冲刺(3/5)
链接部分 队名:女生都队 组长博客: 博客链接 作业博客:博客链接 小组内容 恩泽(组长) 过去两天完成了哪些任务 描述 新增数据分析展示等功能API 服务器后端部署,API接口的beta版实现 展示 ...
- PhpStorm 头部注释、类注释和函数注释的设置(稍微完善点)
首先,PhpStorm中文件.类.函数等注释的设置在:setting->Editor->FIle and Code Template->Includes下设置即可,其中方法的默认是这 ...
- Python中为什么没有++和–(自增/减)(转)
原文地址:http://blog.csdn.net/guang09080908/article/details/47273775(侵删) 这两天看了一些网上各大互联网公司的面试题,发现腾讯特别喜欢考察 ...
- 文件数据库sqlite3 C++ 线程安全和并发
转载:https://www.cnblogs.com/feng9exe/p/10682567.html(线程安全和并发) 转载:https://juejin.im/post/5b7d8522e51d4 ...
- 解决IDEA中Lombok生成代码后提示错误的问题
一.背景介绍 因为我们在使用Lombok的时候,Lombok为我们生成的代码是在字节码中(*.class),而不是在source code中,所以存在IDE提示Lombok生成的方法未定义的错误,导致 ...
- matlab学习笔记11_2高维数组操作 squeeze,ind2sub, sub2ind
一起来学matlab-matlab学习笔记11 11_2 高维数组处理和运算 squeeze, ind2sub, sub2ind 觉得有用的话,欢迎一起讨论相互学习~Follow Me squeeze ...
- Javascript-基本使用
本章向您提供了展示 JavaScript 能力的部分实例. JavaScript 能够改变 HTML 内容 getElementById() 是多个 JavaScript HTML 方法之一. 本例使 ...
- [LeetCode] 654. Maximum Binary Tree 最大二叉树
Given an integer array with no duplicates. A maximum tree building on this array is defined as follo ...