利用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 过滤字符串的技巧,map与itertools.imap
Sep 06 Python
Python语言的面相对象编程方式初步学习
Mar 12 Python
python编码总结(编码类型、格式、转码)
Jul 01 Python
Python设置默认编码为utf8的方法
Jul 01 Python
详解python 发送邮件实例代码
Dec 22 Python
python浪漫表白源码
Apr 05 Python
解决python中的幂函数、指数函数问题
Nov 25 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
python中的django是做什么的
Jul 31 Python
python简单实现插入排序实例代码
Dec 16 Python
python读取mnist数据集方法案例详解
Sep 04 Python
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
Apr 11 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配置心得包含MYSQL5乱码解决
2006/11/20 PHP
让你的网站首页自动选择语言转跳
2006/12/06 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
js写的方法实现上传图片之后查看大图
2014/03/05 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
angularjs基础教程
2014/12/25 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
chrome不支持form.submit的解决方案
2015/04/28 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
Vue实现购物车场景下的应用
2017/11/27 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
ng-alain表单使用方式详解
2018/07/10 Javascript
React中使用UEditor百度富文本的方法
2018/08/22 Javascript
在vue项目中使用md5加密的方法
2018/09/14 Javascript
Js图片点击切换轮播实现代码
2020/07/27 Javascript
vant 自定义 van-dropdown-item的用法
2020/08/05 Javascript
python如何在终端里面显示一张图片
2016/08/17 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
python3 字符串/列表/元组(str/list/tuple)相互转换方法及join()函数的使用
2019/04/03 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
Python连接Impala实现步骤解析
2020/08/04 Python
Python扫描端口的实现
2021/01/25 Python
党员学习十八大感想
2014/01/17 职场文书
监察建议书格式
2014/05/19 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
音乐课外活动总结
2015/05/09 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
主持稿开场白
2015/06/01 职场文书