利用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编写脚本使IE实现代理上网的教程
Apr 23 Python
实现python版本的按任意键继续/退出
Sep 26 Python
详解python的数字类型变量与其方法
Nov 20 Python
Python算法之求n个节点不同二叉树个数
Oct 27 Python
单利模式及python实现方式详解
Mar 20 Python
django传值给模板, 再用JS接收并进行操作的实例
May 28 Python
python pcm音频添加头转成Wav格式文件的方法
Jan 09 Python
详解js文件通过python访问数据库方法
Mar 03 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
Python比较配置文件的方法实例详解
Jun 06 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
pytorch 实现将自己的图片数据处理成可以训练的图片类型
Jan 08 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
一个改进的UBB类
2006/10/09 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
浅析php插件 Simple HTML DOM 用DOM方式处理HTML
2013/07/01 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
2015/01/20 PHP
简单谈谈php中的unicode和utf8编码
2015/06/10 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
javascript与CSS复习(三)
2010/06/29 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
jQuery 无刷新分页实例代码
2013/11/12 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
浅谈vue引用静态资源需要注意的事项
2018/09/28 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
[01:58]最残酷竞争 2016国际邀请赛中国区预选赛积分循环赛回顾
2016/06/28 DOTA
Python存取XML的常见方法实例分析
2017/03/21 Python
python3.x+pyqt5实现主窗口状态栏里(嵌入)显示进度条功能
2019/07/04 Python
django使用admin站点上传图片的实例
2019/07/28 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
Python Numpy 自然数填充数组的实现
2019/11/28 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
python 爬取B站原视频的实例代码
2020/09/09 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
印度网上药店:1mg
2017/10/13 全球购物
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
计算机专业个人简短的自我评价
2013/10/23 职场文书
房屋改造计划书
2014/01/10 职场文书
英文导游欢迎词
2014/01/11 职场文书
品质主管岗位职责
2014/03/16 职场文书
领导班子自我剖析材料
2014/08/16 职场文书
三八妇女节趣味活动方案
2014/08/23 职场文书
Java 将PPT幻灯片转为HTML文件的实现思路
2021/06/11 Java/Android
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js