<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

与我联系

常用链接

我参加的小组

我参与的团队

我的标签

随笔分类

随笔档案

相册

收藏夹

珍藏

搜索

  •  

积分与排名

  • 积分 - 112374
  • 排名 - 327

最新评论

评论排行榜

今天闲来无事,一直想学习英语,于是心血来潮,想把www.listeningexpress.com这个网站上的VOA英文mp3给down下来(声明,绝对不是为这个网站打广告,不过它确实不错)。
看着满满一面的连接,想用迅雷下载全部连接功能,可发现还有很多我不想要的连接。唉,既然我们是Programer,既然电脑是用来辅助人们的工作的,那么。。。。
构思
第一步:先把这个页面的html source给down下来
第二步:正则,匹配到我要的mp3连接
第三步:把mp3文件down下来
打开VS准备敲下我熟悉的C#,等我把Project建完,我就懒惰起来了。

突然想起Ruby来。翻翻资料,10行代码解决了这个玩意儿。
require 'net/http'
= Net::HTTP.new('www.listeningexpress.com',80)
resp,data 
= h.get('/download/',nil)
mp3List 
= data.scan(%r|\<a href=\"\/get\.asp\?f=voase(.+?).mp3\">|)
for mp3 in mp3List
  file_name 
= "voase#{mp3}.mp3"
  new_file_name 
= file_name.gsub(/[\s]/,"%20")
  f 
= Net::HTTP.get("www.listeningexpress.com","/100/voase/#{new_file_name}")
  File.open(
"d:\\mp3\\#{file_name}","wb+").puts "#{f}"
end
让它运行去吧
****************************分隔线,废话开始********************************************8
在程序员的世界里我们总也离不开可乐和咖啡,在我们享受鱼肉这些正餐之外还需要这些“小意思”来调剂我们的精神。
在我们用C#等“企业级”开发语言的时候我们是否也去关注一下“咖啡”色的脚本语言。
在服务器维护等领域,那些管理员常常因为大量重复性工作,而需要编写很多脚本来辅助他们的工作,所以Perl之流等在服务器管理员行业特别流行,而在程序员的世界里我们却很少发现这样的事情。有的时候关注一下美丽小巧的脚本语言也不错哦,C#犹如大家闺秀,而这些脚本语言却很像小家碧玉。有的时候常常在想程序设计语言也有生命,也有自己的性格。有的温和,有的霸气。

发这个Post想让大家也来谈谈自己的“小家碧玉”,不知道该不该发在首页?
posted on 2008-03-04 15:43 横刀天笑 阅读(2240) 评论(19)  编辑 收藏 所属分类: 技术点滴

FeedBack:
#1楼  2008-03-04 15:48 工业酒精      
不用迅雷。。。。

用flashget的话,下载全部链接的时候,可以筛选文件后缀。
  回复  引用  查看    
#2楼 [楼主] 2008-03-04 15:58 横刀天笑      
迅雷也可以筛选,但是它不是文件后缀啊/get.asp?f=aaaa.mp3,这样后缀是asp。。。。

另外,这篇文章我不是想谈论下载的。。。
  回复  引用  查看    
#3楼  2008-03-04 16:08 Ariel Y.      
请在此贴下讨论“小家碧玉”,勿讨论下载工具,呵呵呵。
  回复  引用  查看    
#4楼  2008-03-04 16:13 floodpeak      
呵呵,有意思,ruby,如碧玉
  回复  引用  查看    
#5楼  2008-03-04 16:40 冬冬      
干什么活用什么家伙;不求最好,但求最合适~~~
  回复  引用  查看    
#6楼  2008-03-04 17:01 Clark Zheng      
动态语言适合干这个,节前想做一个刷火车票的程序来着,苦于不会ruby,C#做来失去了兴趣。。。
  回复  引用  查看    
#7楼  2008-03-04 17:38  J [未注册用户]
囧,经常用python + wget下漫画
  回复  引用    
#8楼  2008-03-04 20:08 fox23      
@Clark Zheng
.....- -!!!

  回复  引用  查看    
#9楼  2008-03-04 22:08 梦里花落知多少      
python也不错,实现类似程序代码行数应该相差不多

  回复  引用  查看    
#10楼  2008-03-05 08:50 GPS监控 [未注册用户]
经常用python + wget下漫画!!
  回复  引用    
#11楼  2008-03-05 09:57 Wisdom-zh      
脚本语言就是好啊, 小看脚本的人, 在若干年之后回头, 必然鄙视自己.
  回复  引用  查看    
--引用--------------------------------------------------
Wisdom-zh: 脚本语言就是好啊, 小看脚本的人, 在若干年之后回头, 必然鄙视自己.
--------------------------------------------------------

我现在就鄙视你。。。。

整一SB
  回复  引用    
#13楼  2008-03-05 18:04 Wisdom-zh      
@123.113.199.*
呵呵, 年轻人, 火大伤身啊
怎么不敢登录进来, 让大家看看你的美好嘴脸?

  回复  引用  查看    
#14楼  2008-03-17 12:40 路过 [未注册用户]
呵呵 就是啊
火气这么大
  回复  引用    
#15楼  2008-03-17 12:42 路过 [未注册用户]
你们这是什么脚本哦
我还以为是学习As脚本的呢
  回复  引用    
#16楼  2008-03-31 12:01 yiketudou      
这是python脚本的实现:

1import sys,urllib,re
2page  = urllib.urlopen( "http://www.listeningexpress.com/download/" ).read()
3for item in re.compile( "\<a href=\"(\/get\.asp\?f=voase.+?.mp3)\">" ).findall( page ) :
4 filename = item.replace( "/get.asp?f=""" ).replace( " ""_" )
5 filename = r"D:\ProgramFiles\pythontest\net" + "\\voa_mp3\\" + filename
6 urlto = "http://www.listeningexpress.com" + item.replace( " ""%20" )
7 urllib.urlretrieve(urlto, filename)
8 print "ok---" + filename



  回复  引用  查看    
#17楼 [楼主] 2008-05-03 22:41 横刀天笑      
哇,更少,不愧为脚本之王的python啊
  回复  引用  查看    
#18楼  2008-05-11 14:05 身上 [未注册用户]
看不懂啊
  回复  引用    
#19楼  2008-07-16 09:18 装配脑袋      
貌似用.NET也不是很多……

 1 With New WebClient

 2     Dim data = .DownloadString("http://www.listeningexpress.com/download/")

 3     Dim reg = New Regex("\<a href=""\/get\.asp\?f=voase(.+?).mp3"">")

 4     For Each mp3 As Match In reg.Matches(data)

 5     Dim fileName = "voase" & mp3.Groups(1).Value & ".mp3"

 6         .DownloadFile( _

 7             "http://www.listeningexpress.com/100/voase/" + HttpUtility.HtmlEncode(fileName), _

 8             "d:\mp3\" & fileName)

 9     Next

10 End With


  回复  引用  查看