利用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实现控制台输入密码的方法
May 29 Python
在Django框架中运行Python应用全攻略
Jul 17 Python
Python实现合并同一个文件夹下所有PDF文件的方法示例
Apr 28 Python
Python中asyncio与aiohttp入门教程
Oct 16 Python
对python3中, print横向输出的方法详解
Jan 28 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
Python实现多态、协议和鸭子类型的代码详解
May 05 Python
python3用urllib抓取贴吧邮箱和QQ实例
Mar 10 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
使用python接受tgam的脑波数据实例
Apr 09 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
Jun 03 Python
python中os.path.join()函数实例用法
May 26 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正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
用js遍历 table的脚本
2008/07/23 Javascript
Javascript的并行运算实现代码
2010/11/19 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
Bootstrap精简教程
2015/11/27 Javascript
简单讲解jQuery中的子元素过滤选择器
2016/04/18 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
微信小程序开发(二)图片上传+服务端接收详解
2017/01/11 Javascript
Bootstrap 填充Json数据的实例代码
2017/01/11 Javascript
jQuery快速实现商品数量加减的方法
2017/02/06 Javascript
bootstrap中添加额外的图标实例代码
2017/02/15 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
nodejs实现连接mongodb数据库的方法示例
2018/03/15 NodeJs
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
JavaScript计算正方形面积
2019/11/26 Javascript
[33:39]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第二局
2016/02/27 DOTA
python使用多线程不断刷新网页的方法
2015/03/31 Python
为Python的Tornado框架配置使用Jinja2模板引擎的方法
2016/06/30 Python
Python iter()函数用法实例分析
2018/03/17 Python
在Pycharm中将pyinstaller加入External Tools的方法
2019/01/16 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
详解python路径拼接os.path.join()函数的用法
2019/10/09 Python
使用keras实现孪生网络中的权值共享教程
2020/06/11 Python
如何把python项目部署到linux服务器
2020/08/26 Python
html5 分层屏幕适配的方法
2018/03/16 HTML / CSS
原生canvas制作画图小工具的踩坑和爬坑
2020/06/09 HTML / CSS
酒店办公室文员岗位职责
2013/12/18 职场文书
《长城》教学反思
2014/02/14 职场文书
国庆促销活动总结
2014/08/29 职场文书
优秀教师个人材料
2014/12/15 职场文书
2016年优秀少先队辅导员事迹材料
2016/02/26 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis