利用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使用回溯法子集树模板解决爬楼梯问题示例
Sep 08 Python
python3 pillow生成简单验证码图片的示例
Sep 19 Python
Python面向对象class类属性及子类用法分析
Feb 02 Python
python selenium自动上传有赞单号的操作方法
Jul 05 Python
django 外键model的互相读取方法
Dec 15 Python
python 内置模块详解
Jan 01 Python
使用 Python 处理 JSON 格式的数据
Jul 22 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
python序列化与数据持久化实例详解
Dec 20 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
Python实现的北京积分落户数据分析示例
Mar 27 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
咖啡店都有些什么常规豆子呢?有什么风味在里面
2021/03/04 咖啡文化
实用函数10
2007/11/08 PHP
详解PHP的Yii框架的运行机制及其路由功能
2016/03/17 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
Javascript 定时器调用传递参数的方法
2009/11/12 Javascript
JavaScript DOM 学习第九章 选取范围的介绍
2010/02/19 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
Windows 系统下安装和部署Egret的开发环境
2014/07/31 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
jquery实现可自动判断位置的弹出层效果代码
2015/10/12 Javascript
AngularJS中的缓存使用
2017/01/11 Javascript
vue中for循环更改数据的实例代码(数据变化但页面数据未变)
2017/09/15 Javascript
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
vue-router动态设置页面title的实例讲解
2018/08/30 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
python读取Android permission文件
2013/11/01 Python
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
Python实现SVN的目录周期性备份实例
2015/07/17 Python
Python的自动化部署模块Fabric的安装及使用指南
2016/01/19 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
django中使用事务及接入支付宝支付功能
2019/09/15 Python
python中可以声明变量类型吗
2020/06/18 Python
Python hashlib和hmac模块使用方法解析
2020/12/08 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
华为c/c++笔试题
2016/01/25 面试题
what is the difference between ext2 and ext3
2013/11/03 面试题
专科毕业生学习生活的自我评价
2013/10/26 职场文书
四年的个人工作自我评价
2013/12/10 职场文书
汉语言文学毕业求职信
2014/07/17 职场文书
vue3不同环境下实现配置代理
2022/05/25 Vue.js