酷Linux 专栏: Linux 和音乐潮流-1
题外话: 作为一个坚定的*nix系统使用者,我常常向我周围的人推荐使用L
好吧,先说我抓音乐的小例子。我来到美国之后
wget some_url
就可以把一个网页或者资源下载到自己机器上。
好,我们先试验这个命令:
wget http://www.google.com/trends/music -O music.list
-O 表示另存为后面的文件,简单吧。
然后,我们再学一个命令叫cat. cat 不是小猫,是把文件的内容输出到屏幕. cat 后面可以接多个文件,具体可以用 cat –help 看帮助。这个地方,我们用 cat filename 输出文件。
cat music.list
怎么样,cat 输出了一个HTML的文件吧。这个HTML文件就是你的浏览器看到的. 然后你要说了,我怎么把这个html文件变成一个格式整齐的列表呢。不着急,下回我告诉你,这次先打一段天书一样的代码(这是一整行内容,注意第一行结束后有一个空格):
cat music.list |tr "\n" " "|egrep -o "song\">[^<]*” |tr “>” “\t”|cut -f 2|sort|uniq >mylist.new
好了,你就发现mylist.new 中全是格式正确的歌曲名了。这段天书怎么理解您无须担心,你可以发现原来在windows下需要copy 20次得到的文本文件一行命令就得到了。那么,学这段天书要多久呢?只要你常来看我的专栏,看三次,每次十分钟,肯定能理解。如果一生做一次,从头学这个天书效率当然不如手工,不过要是天天赶潮流,您就需要考虑用这个命令了。
好了,最后贴出一个喜欢听王小峰推荐歌曲的人要用的一个下载脚本,每次三表同学新歌上线,你轻轻一敲回车,歌曲全到你硬盘,多让人羡慕啊(当然,这个别太传,本来就是偷偷通过他的xml 发现歌曲链接的,传过了三表要发火了)。这个脚本是python 写的,但是因为windows下没有wget, 所以是Linux 专用的 :) 快用这个让美女/闺蜜/帅哥羡慕你吧
#!/usr/bin/python
# Download all the music recommended by wangxiaofeng.net
# Author: Eric You XU
# GPLv2
import os
import commands
os.popen("wget www.wangxiaofeng.net/mp3player.xml -O mp3player.xml")
str="""cat mp3player.xml|egrep -o path=[^3]+mp3|tr “\\”" “\\n”|grep http >wangxiaofeng.list”"”
print str
os.popen(str)
f=open(”wangxiaofeng.list”)
for g in f.read().split(’\n’):
print g
a="wget \""+g+"\""
os.popen(a)
注意: 最后三行是有缩进的。可以把这个存成 a.py, 然后 chmod +x a.py. 然后执行 ./a.py 具体的原理我下次讲。如果有问题,请留言。预祝你抓取所有王小峰歌曲成功。
课后作业:
1. 练习用wget 抓一下 baidu 的500个金曲, 链接是: http://list.mp3.baidu.com/topso/mp3topsong.html
2. 通过cat 命令研究一下baidu 的 html 和 Google 的 html. 看看哪家的让你觉得舒服. 下节课我们继续讲怎么处理这两个HTML.
下节课预告:1. 那段天书的原理是什么 2. 我怎么抓baidu 的流行榜单
过几天等有时间我还会给大家介绍优盘上的Linux, 光盘上的Linux 和最酷的Linux XGL桌面 还有给基督徒用的Linux 和给学前儿童用的Linux. 其实Linux远比一般人想像的简单而且酷。
本专栏欢迎投稿,暂无稿费。

Angke said,
April 10, 2007 @ 6:58 pm
不错,这样下去会有更多的人使用Linux的。
我觉得还是先不要拉到细节里去的好,好多人连windows的命令行都没有用过,提到Linux命令行真的就头大了。
另外,个人意见是Mac OS X已经把最酷眩桌面的称号让给了装了XGL的Linux了 :)
Solrex said,
April 10, 2007 @ 8:15 pm
同意楼上最后一句话
不过我只在排版公司看过 Mac OS X
没用过
Angke said,
April 10, 2007 @ 8:29 pm
“他们总认为Linux难用”
岂止Linux被误认为难用,有好几个人都这样说Mac OS X。通常他们这样说之后就会被我的出离愤怒所震慑,继而掩饰说自己需要的软件在Mac上不能运行。然而绝大多数人又会立刻开始抓耳挠腮,因为我一定要他们讲出一个不能在Mac上找到替代品的软件。
所以很多人的观点完全是偏见。但是很奇怪的是,这个偏见是怎么产生和散发出去的。
Eric said,
April 10, 2007 @ 8:34 pm
是啊,人们的偏见不知道从什么地方来的,而且一来,就挡不住,你无论怎么纠正,他们就和忠实信徒一样,坚持观点不动摇。
iverson said,
April 10, 2007 @ 9:04 pm
very useful and wonderful!
virushuo said,
April 11, 2007 @ 12:13 pm
不错,但是太细节了会不会让很多人晕倒呢?
Ur friend said,
April 11, 2007 @ 12:38 pm
一眼看出virushuo是个牛人
gondi said,
April 11, 2007 @ 11:15 pm
看到这样的文章很喜欢,有一个问题想请教,搜了好久都找不到方法(ubuntu新新手)
请问ubuntu下怎么调亮度和对比度?由于我的显示器质量问题,必须通过调显卡才能设置满意的颜色,但ubuntu下的显卡面板只能调整三原色,不能调对比度和亮度,特请教大家(ATI 9550),谢谢
kliz said,
April 11, 2007 @ 11:57 pm
我一直都是复制粘贴到tmp.lst里面
然后awk -F\” ‘{print $2}’ tmp.lst >mp3.lst
有点笨啊
恩我不懂python
如果让我改改的话
这段代码
f=open(”wangxiaofeng.list”)
for g in f.read().split(’\n’):
print g
a=”wget \”"+g+”\”"
os.popen(a)
可以把wget改成proz哦
或者直接wget -i wangxiaofeng.list
Eric said,
April 12, 2007 @ 10:20 pm
ProZilla 不是每个机器上都有,比较而言wget 比较通用
那个 wget -i 受教了 感谢提醒。
Romeo Chen said,
April 21, 2007 @ 9:54 pm
什么时候有那段天书原理的解释呢
huaihuaixiaoshao said,
April 21, 2007 @ 11:36 pm
windows下也有wget的
3 day bahamas cruise said,
May 30, 2007 @ 5:47 pm
3 day bahamas cruise…
» 酷Linux 專欄: Linux 和音樂潮流-1 | 4G Spaces and Web 2.3…
无限 said,
October 28, 2008 @ 2:47 am
回3楼: 中国有句话 叫做 “己所不欲,勿施于人” 同样可以引申出 “己之所欲,勿强于人”,各人的审美观不同 自然会有不一样的看法,认为别人是偏见的 应该首先要检视自己是否也是偏见.
回楼主: 我觉得linux在中国的普及倒不是盗版和游戏,而是qq和网速
说qq是因为qq的一整套东西确实已经占据了网民的大量应用时间,诚然有不少人在网吧里玩游戏 但还有更多的人在办公室 在家里玩qq游戏大厅,另外qq的视频和音频功能很对中国网民的口味 当然不一定包括在座这些geeker型(我也在内)的.
而网速则是另外一回事,如果网速能维持到10MB/s 的话,注意是大B,linux反而比windows更具有可用性 因为那一套包管理制度 和 软件库比windows下的手工安装更易用 更干净,然而目前由于网速的问题 一些发行版 如ubuntu 默认安装后的软件源在中国访问是奇慢无比,只有自己配置以后换个软件源才会好些 但这个换软件源这一步就阻挡了很多用户 比如我父母这类的
Junyu said,
March 1, 2009 @ 11:20 am
You Xu 老师, 您火了!
Junyu said,
March 1, 2009 @ 11:20 am
发完以后才发现原来是 07 年的帖子…
蜗牛牛 said,
March 1, 2009 @ 11:36 am
有点意思 不过还是不懂
L.R said,
March 1, 2009 @ 11:52 am
我从三表漂洋过海来到这里
pass_by said,
March 1, 2009 @ 11:59 am
最大的麻烦是网银,支付宝之类的东西
arthur said,
March 1, 2009 @ 12:38 pm
我想抛弃perl转投python了。。。
janet said,
March 1, 2009 @ 5:00 pm
看看我做的js书签:
http://blog.pshowing.com.cn/janet/2009/03/02/%e8%8e%b7%e5%8f%96%e4%b8%89%e8%a1%a8%e5%93%a5%e7%bd%91%e5%9d%80%e7%9a%84mp3%e5%88%97%e8%a1%a8/
longlong said,
March 1, 2009 @ 5:56 pm
博主,windows下是有wget的,只不过是在命令行下运行的
scofiely said,
March 1, 2009 @ 8:48 pm
从三表处来您这!
您讲:因此我准备开一个专栏,专讲在Linux下面可以做在Windows下做不到的酷事情,希望有人因此喜欢上 Linux.
个人觉得博主还是先讲讲在Linux下也能做在Windows做到的大部分事情吧,我还没有用过Linux,很有兴趣听你讲课。
关于抓取三表的音乐,您能不能整简单点,三表都讲了:我倒是建议这位同学编写一个可以双击安装的小程序,让我这样什么都不懂的人坐享其成。
有时间有精力给我等坐享其成的来个哈…
booster said,
March 1, 2009 @ 10:32 pm
Eric said,
April 10, 2007 @ 8:34 pm
是啊,人们的偏见不知道从什么地方来的,而且一来,就挡不住,你无论怎么纠正,他们就和忠实信徒一样,坚持观点不动摇。
——————-
是啊,我也觉得奇怪为什么废柴们坚定的认为linux这种垃圾好用。
booster said,
March 1, 2009 @ 10:37 pm
废柴们我教你们一些东西吧:
第一,你们坚持的free software理想,是跟商业软件格格不入的,把自己的脸贴到mac os的屁股上,人家不会理你们,你们也背叛了你们的理想(如果确实有的话)。
第二,博主你搞的这段垃圾脚本语言明显实在帮助盗版,明白不?
第三,废柴们就别指望垃圾linux会成为主流了,你们闹轰轰的折腾了快10年,结果如何?怨妇们也再别唠叨为什么人民不关心你们的“牛逼”技术了,我告诉你们原因:人民有更重要的事要做,你们这些技术loser关心的事 别人不关心,这不是很正常的事吗?
Klesh said,
March 1, 2009 @ 11:05 pm
莫非三表的受众中使用Linux的人还不在少数么?
今天看到三表在BLOG中公布此脚本链接时就在想他那脆弱的服务能不能承受这种下载
他的博客还能PING到,但网站已经打不开。
哈哈……当然也不一定是由于这个脚本引起,只是无论如何,他这样么做无异于号召自己的读者一起对他发动DOS攻击嘛。
Python 好像有httplib,应该可以通过它直接下载,这样就不必依赖 wget, cat|egrep也可以用内置的正则表达式来代替,这样就可以跨平台了。
说是 linux 下才可以做到的话,有点牵强。对 Python 等这些跨平台脚本引擎来讲,不太公平。
我不太赞成向非专业人士推销 linux ,过火只会适得其反,比如 Firefox ,曾经的金钱鼓励推广导致很多站长使用过激的强奸式推销,导致不少网民对FF产生错误印象。
JW said,
March 1, 2009 @ 11:22 pm
这个,在windows下真的办不到吗?
正午打盹的猫 said,
March 1, 2009 @ 11:47 pm
不许联想观光团
Ben Linus said,
March 1, 2009 @ 11:49 pm
wget确实好用,但是也不用诋毁windows吧?windows也不是只有gui的,wget在windows下也工作的挺好。cat和egrep倒是要改一下。
lyles said,
March 2, 2009 @ 12:26 am
很明显,时间太长了,07年的东西了,现在三表哥已经更换了好几次的服务器了,估计网页也更改过了,所以现在这个python 代码不灵了,
polaris said,
March 2, 2009 @ 12:54 am
最好能先教我mp3player.xml这个地址怎么找到。。嗯,这样
Chenta said,
March 2, 2009 @ 2:05 am
写的这么geek能叫哪个普通人用linux啊?
hanbal said,
March 2, 2009 @ 3:43 am
我曾经试图学习linux,还买了redhat,安装后捣鼓了一段时间,但最后还是放弃了,因为我根本不会任何哪怕是一个命令,请博主介绍一些学习linux命令的基础教材,能够下载的那种当然最好!我还是想抽时间学习学习!
赵赵 said,
March 2, 2009 @ 6:55 am
在三表那看到连接,进来一看,我晕,原来说的是徐宥兄,一直在GR里订阅着呢
oldcheetah said,
March 2, 2009 @ 8:22 am
我想在linux下用msn live没问题吧?
aw said,
March 2, 2009 @ 10:25 am
抓几个mp3就ddos?何况文件还在别的服务器上。。。
三表不是郭敬明老师,没事儿的:)
猩猩还是那个猩猩 said,
March 2, 2009 @ 11:04 am
wget 在 Windows 下我都用了七八年了。google 搜索一下: wget.exe,基本上第一个结果就是。
猩猩还是那个猩猩 said,
March 2, 2009 @ 11:14 am
顺便说一下,我是看了三表的博客才来到这儿的。
再顺便说一下,guanxi 老师的那些美图,我就是使用了 wget, 一把就搞过来的。然后再用 Picasa 或者 Firefox + PicLens 浏览,不过,现在 PicLens 现在升级为 Cooliris 后不支持本地图片的浏览(需要自己动脑筋,写个批处理来生成 mrss)
某个猩猩想问了,guanxi 老师的那些图,网上还有完整的全集吗?别问我,问google。我刚才问了一下 google,还有的,但本猩猩就不告诉你具体链接了。
猩猩还是那个猩猩 said,
March 2, 2009 @ 11:29 am
因为我的工作需要,我用 Linux,也用 Windows。用开源软件并不就是等同于用 Linux,很多开源软件都有 Windows 的 native 版本。我经常把 Linux 下的思维方式用于 Windows 下,我在 Windows 下也用了很多的开源软件。比如:UnxUtils (a collection of ports of common GNU Unix-like utilities to native Win32) http://en.wikipedia.org/wiki/UnxUtils
有些开源软件没有 windows 的 native 版本。比如,Linus 搞的 git 分布式版本控制软件一直只有 cygwin 包装的版本,这样的话,我就用另一个类似的软件 mercurial (hg)。mercurial 和 git 一样都得到过很多好评,都差不多的。
猩猩还是那个猩猩 said,
March 2, 2009 @ 11:57 am
不需用 Python,写 Shell 程序就可以了,代码要改为 wget -i。如果是在 Windows 下,写个.bat 就行(代码的 cat 改为 type),再加上几个 native 的 egrep,grep, wget,一共四个文件,就可以发给三表音乐爱好者了。
1 said,
March 2, 2009 @ 7:39 pm
高手。整点大众都明白的啊,跟听相对论一样
猩猩还是那个猩猩 said,
March 3, 2009 @ 7:14 am
用 Windows 的猩猩们,下载三表音乐的解决方案如下:
(1) 先建一个目录。
(2) 然后 google 一把 wget.exe,把该文件下载到目录。(注:当前是 1.11.4版本)
(3) 然后 google 一把 grep.exe 2.5,下载后得到的 rar 文件也解压到此目录。(注: 2.4 以前的版本不支持 -o 参数,一定要用 2.5 版本的 grep)
(4) 用记事本写一个批处理文件,共 3 行代码,具体如下,然后存为 get_mp3.bat:
wget http://www.wangxiaofeng.net/mp3player.xml -O mp3player.xml
grep -E -o “http://[^ ']+\.mp3″ mp3player.xml > mp3player.txt
wget -i mp3player.txt
—-
用法:双击 get_mp3.bat 即可,运行是出现一个黑底的 DOS 窗口,mp3下载进度都显示在其中,下载完成后,窗口自动关闭。
—-
可惜,三表的blog今天被和空格谐掉了,过几天才能访问。
猩猩还是那个猩猩 said,
March 3, 2009 @ 7:20 am
上贴的 grep 那行的第一个单引号,应该是英文的单引号,此博客系统把它显示成中文的单引号了。
猩猩还是那个猩猩 said,
March 3, 2009 @ 7:23 am
芬特,意思还是表达错了。最后再发一贴,不再发了。
上贴的 grep 那行的第一个双引号,应该是英文的双引号,此博客系统把它显示成中文的双引号了。
Andre said,
March 4, 2009 @ 5:57 am
猩猩观光团前来参观一篇2007年的帖子
cnrerise said,
March 4, 2009 @ 9:00 am
博主,你这个专栏是准备一年一篇么??
三不靠谱 said,
March 4, 2009 @ 9:52 am
羡慕王三表的人气吧! 大家都喜欢不懂技术但是懂扯淡的。
zola said,
March 4, 2009 @ 12:10 pm
写BAT和SHELL我还勉强算有经验。
若我搞明白正则表达式了,就正式荣升为程序员了:)
羡慕懂正则表达式的高手们。
Shaka said,
March 5, 2009 @ 8:41 pm
在windows下,可以使用Orbit Downloader抓音乐。
Sayisee said,
March 6, 2009 @ 3:04 am
不懂,纯支持~
winterstar said,
March 6, 2009 @ 8:31 am
很有意思,受教了。尝试写了一个Shell,利用它可生成一个带雅虎播放器的网页,上传网页后,你就可以在线播放这些音乐了。
xmp3.sh:
wget http://www.wangxiaofeng.net/mp3player.xml -O mp3player.xml
sed -i ’s/song path/a href/g’ mp3player.xml
sed -i ’s/ title=”/\>/g’ mp3player.xml
sed -i ’s/” \//<br\//g’ mp3player.xml
echo “” > mp3player.html
echo “” >> mp3player.html
echo “” >> mp3player.html
echo “wangxiaofeng music list” >> mp3player.html
echo “” >> mp3player.html
echo “” >> mp3player.html
cat mp3player.xml|grep http >> mp3player.html
echo “” >> mp3player.html
echo “” >> mp3player.html
echo “” >> mp3player.html
rm mp3player.xml
winterstar said,
March 6, 2009 @ 8:50 am
echo 后“”的内容被屏蔽了,是一些加尖括号的HTML标签:html head title /title /head body script type=”text/javascript” src=”http://mediaplayer.yahoo.com/js” /script /body /html
Gabriel said,
March 9, 2009 @ 3:31 am
我确实想装LINUX,但是又确实一点儿都不懂。我能装么?