BBS.ChinaUnix.net
首页 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 



写了个抓百度top500歌曲的脚本~欢迎大家指正。
首页 » 论坛 » Shell »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
phpman   帅哥
精灵使



CU编号: 175115
注册:2004-8-4
最后登录: 2009-06-29
帖子:3778
精华:0

可用积分:1654 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


1楼 发表于 2006-7-11 23:21 

可以生成排名,歌曲名和下载地址。

添加一行wget就可以下载了,不过要一个个下载。
请教大家有没有办法同时下载列表中的多个MP3,比如一次下载5个,五个中最先完成的一个退出后开始第6个,第二个完成退出后开始第7个......如此类推。
脚本如下,生成的列表附后

#! /bin/bash
# Auto download top 500 song from baidu.com
#
#
T500_url="http://list.mp3.baidu.com/topso/mp3topsong.html?id=1#top2"
File_name="mp3topsong.html"
#创建日志目录
mkdir logs
#抓取top500的网页另存为mp3topsong.htm
if wget -a logs/logs.log $T500_url  -O $File_name
then

        # 生成top500的地址页下载列表.
        if cat $File_name|grep 'word='|grep '<td'|awk -F'href="' '{print $2}'|sed 's/" target=_blank>/  /'| sed 's/<\/a>//' |head -n 501|awk '{print NR,$1,$2}'  > top500.dat
        then
                # 逐条处理top500中的每首歌
                while read line
                do
                        Song_num=`echo $line|awk '{print $1}'`
                        Page_url=`echo $line|awk '{print $2}'`
                        Song_name=`echo $line|awk '{print $3}'`
               
                        if wget -a logs/logs.log --ignore-length $Page_url -O data.tmp
                        then
                                #从抓取的网页中找到mp3的地址。
                                if        Song_url=`cat data.tmp|grep word=mp3|awk -F'来源网址' '{print $2}'|awk -F'请参照' '{print $1}'|awk '{print $2}'|grep 'http'|grep 'mp3$' |head -n 1`
                                then
                                        if [[ -z $Song_url ]]
                                        then
                                                echo "歌曲$Song_name的地址下载地址为空"
                                                echo  "$Song_num   $Song_name  $Page_url" >>logs/Down_error.log
                                                continue
                                        else
                                                out=`echo  "$Song_num    $Song_name   $Song_url " `
                                                echo $out
                                                echo $out >> Down_url_name.txt
                                                rm data.tmp
                                        fi
                                else
                                        echo "分析歌曲$Song_name的地址发生错误"
                                        echo "$Song_num   $Song_name  $Page_url" >>logs/Down_error.log
                                        continue
                                fi
                        else
                                echo "下载歌曲$Song_name的地址$Page_url发生错误"
                                echo "$Song_num   $Song_name  $Page_url" >>logs/Down_error.log
                                continue
                        fi
                done < top500.dat
                echo "All job completed"
                #rm top500.dat
                #rm $File_name
        else
                echo "分析TOP500网页错误";exit 2
        fi
else
        echo "下载TOP500网页错误";exit 1
fi

生成下载的列表:
1 秋天不回来 http://www.jn.nm.cninfo.net/music/mp3/200662156661329.mp3
2 求佛 http://www.xfcb.com/mp3/92006416343924222.mp3
3 大城小爱 http://music1.51.com/user/g/j/gjgookluck/1146030534.mp3
4 不要再来伤害我 http://file1.bbs.zcom.com/2/6/1/5/0/6/2/8/1147702061.mp3
5 我们都是好孩子 http://www.xj2005.com/bbs/uploadfile/2005-10/200510102244941298.mp3
6 不怕不怕 http://free.ab12.cn/liawell/joyes/music/不怕不怕.mp3
7 认真的雪 http://203.69.144.130/grm.cdn.hinet.net/xuite/e/c/d/1/15182794/blog_355860/dv/6777106/6777106.mp3



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

戴尔服务器三台低价出售,有意站短!~
------------------
oooO.............
(....)... Oooo...
.\..(.....(.....)....
..\_)..... )../.....
.......... (_/.....
------------------
路过~不要错过~
webyuhang   帅哥
风云使者




CU编号: 305088
注册:2005-8-22
最后登录: 2009-07-02
帖子:539
精华:0

可用积分:685 (丰衣足食)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


2楼 发表于 2006-7-11 23:31 

ok,不错!if [[ -z $Song_url ]] 与 if [ -z $song_url ] 有什么区别?



您对本贴的看法:鲜花[0] 臭蛋[0]
phpman   帅哥
精灵使



CU编号: 175115
注册:2004-8-4
最后登录: 2009-06-29
帖子:3778
精华:0

可用积分:1654 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


3楼 发表于 2006-7-11 23:38 



QUOTE:
原帖由 webyuhang 于 2006-7-11 23:31 发表
ok,不错!if [[ -z $Song_url ]] 与 if [ -z $song_url ] 有什么区别?

没什么区别吧?
好象更能防止逻辑错误。
请指教?



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

戴尔服务器三台低价出售,有意站短!~
------------------
oooO.............
(....)... Oooo...
.\..(.....(.....)....
..\_)..... )../.....
.......... (_/.....
------------------
路过~不要错过~
scode   帅哥
精灵王



CU编号: 317288
注册:2005-9-24
最后登录: 2009-04-11
帖子:383
精华:2

可用积分:397 (稍有积蓄)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


4楼 发表于 2006-7-11 23:39 

高手。



您对本贴的看法:鲜花[0] 臭蛋[0]
寂寞烈火   帅哥
老法王


CU奥运火炬传递手2008
荣誉会员  
CU编号: 187152
注册:2004-10-1
最后登录: 2009-07-04
帖子:24676
精华:5

可用积分:14614 (大富大贵)
信誉积分:110
专家积分:171 (本版:102)
空间积分:1425
推广积分:0

来自:北京海淀
状态:...离线...

[个人空间] [短信] [博客]


5楼 发表于 2006-7-12 00:16 

墙~~~



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

孰能浊以静之徐清?
孰能安以动之徐生?
li-jiahuan   帅哥
侠客




CU编号: 289501
注册:2005-7-9
最后登录: 2009-06-21
帖子:46
精华:0

可用积分:160 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


6楼 发表于 2006-7-12 00:23 

ubuntu.org.cn上的oneleaf曾经给出过完整的脚本
一直在用
大家可上那找找
可以下最新100和排行500强



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

面包会有的
女人也会有的
phpman   帅哥
精灵使



CU编号: 175115
注册:2004-8-4
最后登录: 2009-06-29
帖子:3778
精华:0

可用积分:1654 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


7楼 发表于 2006-7-12 09:02 



QUOTE:
原帖由 li-jiahuan 于 2006-7-12 00:23 发表
ubuntu.org.cn上的oneleaf曾经给出过完整的脚本
一直在用
大家可上那找找
可以下最新100和排行500强

T500_url="http://list.mp3.baidu.com/list/newhits.html?id=1#top1"
地址改成这个就可以下载top100
http://list.mp3.baidu.com/list/top200.htm#top3
则可以下载top200,不过top200的分析不是很好,可以在得到列表以后单独处理一下(sed 替换掉"</A></td>"字符为空)

[ 本帖最后由 phpman 于 2006-7-12 09:06 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

戴尔服务器三台低价出售,有意站短!~
------------------
oooO.............
(....)... Oooo...
.\..(.....(.....)....
..\_)..... )../.....
.......... (_/.....
------------------
路过~不要错过~
shitou9000   帅哥 (frame)
风云使者



CU编号: 184181
注册:2004-9-17
最后登录: 2008-10-24
帖子:605
精华:0

可用积分:615 (丰衣足食)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


8楼 发表于 2006-7-12 13:42 

真是太墙了。好好看看。



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

刚刚从虚拟回到现实,渐渐进入状态。
ha_ (不是我,是枫.)
光明使者



CU编号: 171890
注册:2004-7-20
最后登录: 2006-08-31
帖子:768
精华:0

可用积分:723 (丰衣足食)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


9楼 发表于 2006-7-12 14:28 

留名



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

看见的,熄灭了;消失的,记住了.
wd
光明使者



CU编号: 96018
注册:2003-9-12
最后登录: 2009-03-30
帖子:991
精华:1

可用积分:1006 (家境小康)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[个人空间] [短信] [博客]


10楼 发表于 2006-7-12 17:28 

写了一个脚本来下歌,可以5线程。。。
但是对于下了一半的歌没有处理。

#!/bin/bash

thread=10

while read line
do

num=$(echo $line | cut -d" " -f1)
filename=$(echo $line | cut -d" " -f2)
left="$num $filename "
url=${line#$left}

if [ $(ps -C wget -o pid= | wc -l) -lt $thread ] ;then
        echo $num $filename $url
        wget -N "$url" -O ./mp3/$filename.mp3 >/dev/null 2>&1 &
else
        until [ $(ps -C wget -o pid= | wc -l) -lt $thread ]
        do
                sleep 10
        done
        echo $num $filename $url
        wget -N "$url" -O ./mp3/$filename.mp3 >/dev/null 2>&1 &
fi
done < ./Down_url_name.txt

[ 本帖最后由 wd 于 2006-7-12 18:13 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

http://blog.wdicc.com

首页 » 论坛 » Shell »


 


Copyright © 2001-2009 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP

Processed in 0.075835 second(s), 4 queries , Gzip enabled