利用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实现的多线程端口扫描功能示例
Jan 21 Python
Python正则表达式经典入门教程
May 22 Python
Python 列表理解及使用方法
Oct 27 Python
5分钟 Pipenv 上手指南
Dec 20 Python
python3 下载网络图片代码实例
Aug 27 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 Python
Python使用Opencv实现图像特征检测与匹配的方法
Oct 30 Python
pytorch载入预训练模型后,实现训练指定层
Jan 06 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Pygame如何使用精灵和碰撞检测
Nov 17 Python
python在package下继续嵌套一个package
Apr 14 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
提问的智慧
2006/10/09 PHP
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
TMDPHP 模板引擎使用教程
2012/03/13 PHP
php自定义的格式化时间示例代码
2013/12/05 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
Js 代码中,ajax请求地址后加随机数防止浏览器缓存的原因
2013/05/07 Javascript
Jquery多选下拉列表插件jquery multiselect功能介绍及使用
2013/05/24 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
javascript获取鼠标位置部分的实例代码(兼容IE,FF)
2013/08/05 Javascript
BootStrap和jQuery相结合实现可编辑表格
2016/04/21 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
对angular 实时更新模板视图的方法$apply详解
2018/10/09 Javascript
JavaScript数据结构与算法之二叉树实现查找最小值、最大值、给定值算法示例
2019/03/01 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
Openlayers绘制地图标注
2020/09/28 Javascript
如何运行Python程序的方法
2013/04/21 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Numpy数组转置的两种实现方法
2018/04/17 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
浅析python继承与多重继承
2018/09/13 Python
python实现自动登录后台管理系统
2018/10/18 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
CSS3的transition和animation的用法实例介绍
2014/08/20 HTML / CSS
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
大学生涯自我鉴定
2014/01/16 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
品质标语大全
2014/06/21 职场文书
金融专业毕业生自荐信
2014/06/26 职场文书
小学庆六一活动总结
2014/08/28 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
springboot入门 之profile设置方式
2022/04/04 Java/Android