利用python写个下载teahour音频的小脚本


Posted in Python onMay 08, 2017

前言

最近空闲的时候看到了之前就关注的一个小站http://teahour.fm/,一直想把这里的音频都听一遍,可转眼间怎么着也有两年了,却什么也没做。有些伤感,于是就写了个脚本,抓了下音频的下载链接,等下载下来后一定要认真听听。

时间仓促,加调试也就那么十几分钟,脚本写的可能有些烂,大家可以留言指出。

teahour.py

#!/usr/bin/env python
 #coding: utf-8
 
 import sys
 import requests
 from BeautifulSoup import BeautifulSoup
 
 reload(sys)
 sys.setdefaultencoding( "utf-8" )
 
 def parse_index():
  l = []
  r = requests.get("http://teahour.fm/")
  text = r.text
  html = BeautifulSoup(text)
  a = html.findAll("ul")[-3].findAll("a")
  for item in a:
   url = "".join(["http://teahour.fm",item.attrs[0][1]])
   title = item.text
   title = title.strip("#")
   l.append((title,url))
  return l
 
 def write(lines):
  with open("teahour.sh","a") as fh:
   fh.writelines(lines)
 
 def parse_sub(t):
  title,url = t
  r = requests.get(url)
  text = r.text
  html = BeautifulSoup(text)
  audio_url = html.find("audio").attrs[-1][-1]
  ext = audio_url.split(".")[-1]
  line = "wget '%s' -SO '%s.%s'\n" % (audio_url,title,ext)
  #print line
  return line
 
 def main():
  lines = []
  l = parse_index()
  for t in l:
   line = parse_sub(t)
   lines.append(line)
  write(lines)
 
 if __name__ == "__main__":
  main()

文本teahour.sh的部分内容如下:

peiqiang@budongdeMacBook-Pro:~/Downloads/teahour$ cat teahour.sh
wget 'http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_89.m4a' -SO '89 和玎玎聊聊如何搭建精益创业团队.m4a'
wget 'http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_88.m4a' -SO '88 与墨刀创始人张元一聊创业从 0 到 1.m4a'
wget 'http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_87.m4a' -SO '87 和互联网老兵高春辉聊 IPIP.net.m4a'
wget 'http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_86.mp3' -SO '86 和『掘金』创始人阴明聊聊创业和技术.mp3'
wget 'http://screencasts.b0.upaiyun.com/podcasts/teahour_episode_85.mp3' -SO '85 这次我们聊聊远程工作.mp3'

执行脚本sh teahour.sh下载的部分内容如下:

peiqiang@budongdeMacBook-Pro:~/Downloads/teahour$ ll
total 1077896
-rw-r--r-- 1 peiqiang staff 130416640 3 16 20:02 83 这次我们聊聊超酷的Ethereum.m4a
-rw-r--r-- 1 peiqiang staff 109631418 3 3 2016 84 继续跟 Robbin 聊聊技术人的战略与战术.m4a
-rw-r--r-- 1 peiqiang staff 89519924 6 12 2016 85 这次我们聊聊远程工作.mp3
-rw-r--r-- 1 peiqiang staff 87766246 8 8 2016 86 和『掘金』创始人阴明聊聊创业和技术.mp3
-rw-r--r-- 1 peiqiang staff 59058564 9 11 2016 87 和互联网老兵高春辉聊 IPIP.net.m4a
-rw-r--r-- 1 peiqiang staff 32408522 10 26 15:55 88 与墨刀创始人张元一聊创业从 0 到 1.m4a
-rw-r--r-- 1 peiqiang staff 43051575 11 8 18:49 89 和玎玎聊聊如何搭建精益创业团队.m4a
-rwxr-xr-x@ 1 peiqiang staff  1055 3 16 20:02 teahour.py
-rw-r--r-- 1 peiqiang staff  11465 3 16 19:57 teahour.sh

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
python生成IP段的方法
Jul 07 Python
Python编程产生非均匀随机数的几种方法代码分享
Dec 13 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
两个元祖T1=('a', 'b'),T2=('c', 'd')使用匿名函数将其转变成[{'a': 'c'},{'b': 'd'}]的几种方法
Mar 05 Python
PyQtGraph在pyqt中的应用及安装过程
Aug 04 Python
Python如何实现强制数据类型转换
Nov 22 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
Python 程序报错崩溃后如何倒回到崩溃的位置(推荐)
Jun 23 Python
python程序如何进行保存
Jul 03 Python
Python利用myqr库创建自己的二维码
Nov 24 Python
通过源码分析Python中的切片赋值
May 08 #Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
May 08 #Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
May 08 #Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 #Python
利用Celery实现Django博客PV统计功能详解
May 08 #Python
浅谈Python生成器generator之next和send的运行流程(详解)
May 08 #Python
python生成式的send()方法(详解)
May 08 #Python
You might like
PHP中ini_set和ini_get函数的用法小结
2014/02/18 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
去除链接虚线全面分析总结
2006/08/15 Javascript
Microsoft Ajax Minifier 压缩javascript的方法
2010/03/05 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jquery validate demo 基础
2015/10/29 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
javaScript如何跳出多重循环break、continue
2016/09/01 Javascript
jquery一键控制checkbox全选、反选或全不选
2017/10/16 jQuery
vue2.0使用v-for循环制作多级嵌套菜单栏
2018/06/25 Javascript
CKEditor4配置与开发详细中文说明文档
2018/10/08 Javascript
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
nodejs脚本centos开机启动实操方法
2020/03/04 NodeJs
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
可用于监控 mysql Master Slave 状态的python代码
2013/02/10 Python
python自定义解析简单xml格式文件的方法
2015/05/11 Python
Python实现动态图解析、合成与倒放
2018/01/18 Python
python实现石头剪刀布程序
2021/01/20 Python
python Opencv计算图像相似度过程解析
2019/12/03 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
个人收入证明范本
2014/01/12 职场文书
学习十八大坚定理想信念心得体会
2014/03/11 职场文书
公司联欢会策划方案
2014/05/19 职场文书
经济贸易系求职信
2014/08/04 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
大学生实习介绍信
2015/05/05 职场文书
六一儿童节致辞
2015/07/31 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL