利用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图像常规操作
Nov 11 Python
python实现寻找最长回文子序列的方法
Jun 02 Python
python实现n个数中选出m个数的方法
Nov 13 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
python 画二维、三维点之间的线段实现方法
Jul 07 Python
Django REST framework内置路由用法
Jul 26 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
tensorflow 查看梯度方式
Feb 04 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
一行代码python实现文件共享服务器
Apr 22 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
一个捕获函数输出的函数
2007/02/14 PHP
PHP MSSQL 存储过程的方法
2008/12/24 PHP
UCenter中的一个可逆加密函数authcode函数代码
2010/07/20 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
2010/10/12 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
php集成套件服务器xampp安装使用教程(适合第一次玩PHP的新手)
2015/06/03 PHP
PHP中__autoload和Smarty冲突的简单解决方法
2016/04/08 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
解决laravel session失效的问题
2019/10/14 PHP
javascript实现页面刷新时自动清空表单并选中的方法
2015/07/18 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
Dojo获取下拉框的文本和值实例代码
2016/05/27 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
vue init失败简单解决方法(终极版)
2017/12/22 Javascript
vue实现路由不变的情况下,刷新页面操作示例
2020/02/02 Javascript
vue flex 布局实现div均分自动换行的示例代码
2020/08/05 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
Python进行数据提取的方法总结
2016/08/22 Python
Django 实现下载文件功能的示例
2018/03/06 Python
详解python中sort排序使用
2019/03/23 Python
Django保护敏感信息的方法示例
2019/05/09 Python
Python3 批量扫描端口的例子
2019/07/25 Python
对CSS3选择器的研究(详解)
2016/09/16 HTML / CSS
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
linux面试题参考答案(6)
2016/06/23 面试题
2015年高中班主任工作总结
2015/04/30 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
Tomcat配置访问日志和线程数
2022/05/06 Servers