利用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实现的下载8000首儿歌的代码分享
Nov 21 Python
Python实现的下载网页源码功能示例
Jun 13 Python
关于Django外键赋值问题详解
Aug 13 Python
Python下调用Linux的Shell命令的方法
Jun 12 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Python global全局变量函数详解
Sep 18 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
使用python绘制二元函数图像的实例
Feb 12 Python
python实现微信每日一句自动发送给喜欢的人
Apr 29 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
基于PyInstaller各参数的含义说明
Mar 04 Python
python中pandas对多列进行分组统计的实现
Jun 18 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获取MAC地址的具体实例
2013/12/13 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
jQuery 1.4 15个你应该知道的新特性(译)
2010/01/24 Javascript
ASP中Sub和Function的区别说明
2020/08/30 Javascript
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
JavaScript 处理Iframe自适应高度(同或不同域名下)
2013/03/29 Javascript
jQuery弹出(alert)select选择的值
2013/04/21 Javascript
javascript中数组的concat()方法使用介绍
2013/12/18 Javascript
仿百度联盟对联广告实现代码
2014/08/30 Javascript
JQuery插入DOM节点的方法
2015/06/11 Javascript
牛叉的Jquery——Jquery与DOM对象的互相转换及DOM的三种操作
2015/10/29 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
jquery无法为动态生成的元素添加点击事件的解决方法(推荐)
2016/12/26 Javascript
基于jQuery实现咖啡订单管理简单应用
2017/02/10 Javascript
vue.js指令和组件详细介绍及实例
2017/04/06 Javascript
Vue.js中的图片引用路径的方式
2017/07/28 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
js实现从右往左匀速显示图片(无缝轮播)
2020/06/29 Javascript
Vue axios 跨域请求无法带上cookie的解决
2020/09/08 Javascript
[18:16]sakonoko 2017年卡尔集锦
2018/02/06 DOTA
使用Python实现BT种子和磁力链接的相互转换
2015/11/09 Python
django解决跨域请求的问题
2018/11/11 Python
只需7行Python代码玩转微信自动聊天
2019/01/27 Python
Python线上环境使用日志的及配置文件
2019/07/28 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
如何用Python编写一个电子考勤系统
2021/02/08 Python
医院工作检讨书范文
2014/02/10 职场文书
留学经费担保书
2014/05/12 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
2014年教务工作总结
2014/12/03 职场文书
大雁塔英文导游词
2015/02/10 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
接触艺术对孩子学习思维有益
2019/08/06 职场文书
解决mysql的int型主键自增问题
2021/07/15 MySQL
table不让td文字溢出操作方法
2022/12/24 HTML / CSS