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.进入地址我们可以发现,页面有着非常整齐的目 ...
随机推荐
- html5 css3 背景视频循环播放代码
<div style ="position: absolute; z-index: -1; top: 0px; left: 0px; bottom: 0px; right: 0px; ...
- C盘不够用了
mklink /d C:\Users\zhangbaowei\.nuget\packages i:\link\.nuget\packages mklink /d C:\Users\zhangbaow ...
- clion 查看代码 多次查看后如何一步一步回退到最初查看的代码位置
在settings->keymap里面搜索navigate,然后就有蓝色字体的Back.Forward,这个两个有自己对应的快捷键,但是你有可能不能使用这个功能,因为在不同的操作系统里面,有可能 ...
- redis之 主从复制和哨兵
一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点保证数据的一致性 1. 主从复制的相关操作 a,配置主从复制方式一.新增redis6380.conf, ...
- XCode教程之 如何在苹果开发者平台添加设备UDID
XCode教程之 如何在苹果开发者平台添加设备UDID.在Xcode开发中,如何在苹果开发者平台添加新的手机设备UDID,进行测试,具体如下 工具/原料 Apple Developer 方法/步骤 1 ...
- Win 10 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问....
按window+R键输入gpedit.msc 来启动本地组策略编辑器 依次找到“计算机配置-管理模板-网络-Lanman工作站”这个节点,在右侧内容区可以看到“启用不安全的来宾登录”这一条策略设置.状 ...
- Python高级笔记(九)Python使用MySQL
1. MySQL基本使用 1.1 数据库简介 Mysql: 关系型数据库,做网站 redis:当作缓存 mongodb:非关系型数据库,做爬虫 SQL语句: DQL:数据查询语言,用于对数据进行查询, ...
- SDN实验---Ryu的应用开发(一)Hub实现
补充: (一)Ubuntu下安装Notepadqq 背景:为什么安装Notepadqq Notepad++ 不仅有语法高亮度显示,也有语法折叠功能,并且支持宏以及扩充基本功能的外挂模组.但是可惜的是N ...
- exports module.exports export export default之间的关系
exports 和module.exports是CommonJS模块规范 export export default是ES6模块的规范,两者完全是不同的概念. node应用由模块组成,采用的是Comm ...
- python实践项目四:猜数字游戏
题目要求:在1-20中随机生成一个数字,你来猜,只有6次机会. 举例一: #!/usr/bin/python # -*- coding: UTF-8 -*- import random secretN ...