1、主程序文件

import os
import json import requests
from contextlib import closing
from progressbar import ProgressBar from down_line import ProgressBar # start_url = 'https://www.ximalaya.com/revision/play/album?albumId=' \
# '3595841&pageNum={}&sort=-1&pageSize=30'
# 3595841 分类ID
# pageNum={} 分页码 # 运行主目录程序 def xi_ma():
# 找URL
start_url = 'https://www.ximalaya.com/revision/play/album?albumId=' \
'9723091&pageNum={}&sort=-1&pageSize=30' # 解析url 得到的网页
# 增加header头 简单的反扒技术
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
} for i in range(2):
url = start_url.format(i + 1) # 翻页效果相当于提交分页,也就是下一页
print(url)
# 提交网址
r = requests.get(url, headers=headers)
# 获取数据
ret = r.content.decode('utf-8')
# 转换JSON格式
result = json.loads(ret)
# 遍历测试结果
for i in result['data']['tracksAudioPlay']:
# print(i['trackName'], '' + i['src'])
src = i['src']
name = i['trackName']
# 保存数据
# with open('./img/{}.m4a' .format(name), 'ab') as f:
# f.write(music.content) with closing(requests.get(src, headers=headers, stream=True)) as response:
chunk_size = 1024
content_size = int(response.headers['content-length'])
progress = ProgressBar(name, total=content_size, unit='KB', chunk_size=chunk_size,
run_status='正在下载', fin_status='下载完毕')
if not os.path.exists('img'):
os.mkdir('img')
with open('./img/{}.m4a' .format(name), 'ab') as file:
for data in response.iter_content(chunk_size=chunk_size):
file.write(data)
progress.refresh(count=len(data)) if __name__ == '__main__':
xi_ma()

2.down_lin source 源代码 下载进度条

  1 class ProgressBar(object):
2
3 def __init__(self, title,
4 count=0.0,
5 run_status=None,
6 fin_status=None,
7 total=100.0,
8 unit='', sep='/',
9 chunk_size=1.0):
10 super(ProgressBar, self).__init__()
11 self.info = "【%s】%s %.2f %s %s %.2f %s"
12 self.title = title
13 self.total = total
14 self.count = count
15 self.chunk_size = chunk_size
16 self.status = run_status or ""
17 self.fin_status = fin_status or " " * len(self.status)
18 self.unit = unit
19 self.seq = sep
20
21 def __get_info(self):
22 # 【名称】状态 进度 单位 分割线 总数 单位
23 _info = self.info % (self.title, self.status,
24 self.count/self.chunk_size, self.unit, self.seq, self.total/self.chunk_size, self.unit)
25 return _info
26
27 def refresh(self, count=1, status=None):
28 self.count += count
29 # if status is not None:
30 self.status = status or self.status
31 end_str = "\r"
32 if self.count >= self.total:
33 end_str = '\n'
34 self.status = status or self.fin_status
35 print(self.__get_info(), end=end_str)
36

python 喜马拉雅 音乐下载 演示代码的更多相关文章

  1. python 音乐下载演示源代码

    import requests import re api = 'http://music.taihe.com/search?' header = { 'User-Agent': 'Mozilla/5 ...

  2. 用Python实现自己下载音乐的统计

    今天看Python实例,学习了如何对文件进行操作,突然想把自己网易云音乐下载到本地的歌曲名单写到一个txt中,看看具体情况.当然,我现在肯定无法做到直接去网易云音乐上爬取,就做个最简单的吧,嘻嘻^-^ ...

  3. Python 应用爬虫下载QQ音乐

    Python应用爬虫下载QQ音乐 目录: 1.简介怎样实现下载QQ音乐的过程: 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网: https://y.qq.com/,在搜索栏上输入一首 ...

  4. Python + Selenium +Chrome 批量下载网页代码修改【新手必学】

    Python + Selenium +Chrome 批量下载网页代码修改主要修改以下代码可以调用 本地的 user-agent.txt 和 cookie.txt来达到在登陆状态下 批量打开并下载网页, ...

  5. Python 应用爬虫下载酷狗音乐

    应用爬虫下载酷狗音乐 首先我们需要进入到这个界面 想要爬取这些歌曲链接,然而这个是一个假的网站,虽然单机右键进行检查能看到这些歌曲的链接,可进行爬取时,却爬取不到这些信息. 这个时候我们就应该换一种思 ...

  6. python爬虫之下载文件的方式总结以及程序实例

    python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...

  7. 从jsTree演示代码中提取的在线文件查看

    从jsTree演示代码中提取的在线文件查看 jsTree 请参考:https://www.jstree.com/ 效果如下: 代码下载:http://files.cnblogs.com/files/z ...

  8. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  9. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

随机推荐

  1. 开发工具之Spark程序开发详解

    一  使用IDEA开发Spark程序 1.打开IDEA的官网地址,地址如下:http://www.jetbrains.com/idea/ 2.点击DOWNLOAD,按照自己的需求下载安装,我们用免费版 ...

  2. 使用开源项目免费申请 JetBrains 全家桶 IDEA 开源许可证

    JetBrains 公司旗下的 IDEA 功能都十分强大,深受各种编程语言相关的程序员的喜爱.我个人而言,经常使用 WebStorm,也使用过 PyCharm. 正常情况下 JetBrains 公司的 ...

  3. 人类又被AI碾压,这次是星际争霸

    还记得2017年,那个血洗围棋界的“阿尔法狗”吗?     这个由谷歌旗下 DeepMind 公司开发的 AI ,对阵世界顶尖围棋选手,打出完全碾压式的战绩: AlphaGo vs. 樊麾 - 5 : ...

  4. 蓝牙BLE实用教程(转载)

    欢迎使用 小书匠(xiaoshujiang)编辑器,您可以通过 设置 里的修改模板来改变新建文章的内容. 1.蓝牙BLE常见问答 Q: Smart Ready 和 Smart 以及传统蓝牙之间是什么关 ...

  5. 《Linux内核设计与实现》学习记录一

    chapter1 Linux内核简介 前言:Unix是一个具有相似应用程序编程接口(API)并且基于相似设计理念的操作系统家族. 1.1 Unix的历史 1.Unix演化版实现了任务管理.换页机制.T ...

  6. linux内核分析第四周学习笔记

    linux内核分析第四周学习笔记 标签(空格分隔): 20135328陈都 陈都 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.co ...

  7. C语言版本:单链表的实现(优化版本)

    未优化版本:http://www.cnblogs.com/duwenxing/p/7569376.html slist.h #ifndef __SLIST_H__ #define __SLIST_H_ ...

  8. 解决p4c安装时protobuf未定义引用的错误

    安装好p4c的依赖之后,执行make -j2时出现以下问题: undefined references to `google::protobuf::internal::LogMessage::oper ...

  9. MongoDB ,cursor not found异常

    查询mongoDB集合数据更新,数据有400w多.我一次用cursor(游标)取1w,处理更新.程序在某段时间运行中遍历游标时发生异常! DBCursor cursor = tabColl.find( ...

  10. Believe

    虽然上了一周的软件工程,可是还是不造软件工程是干什么的.听了一节gitlab,似懂非懂,感觉很高大上的样子,自己折腾了许久,还是没有进展,真心无奈. 真是件考验耐性的事~不过,so what?会成功的 ...