加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Perl实现下载百度Top100歌曲

发布时间:2020-12-16 00:01:12 所属栏目:大数据 来源:网络整理
导读:自从遇见一位Perl大神,本人就对Perl 倾心已久, 想征服它,一直以来没那个勇气,但是从现在开始我要征服它,希望有一天能成长为他那样的级别。 挥手间,强弩灰飞烟灭。 从现在开始吧。。 下面是我的处女作. 用到的知识点都是最基本的, 高深的还不会,还要慢

自从遇见一位Perl大神,本人就对Perl 倾心已久, 想征服它,一直以来没那个勇气,但是从现在开始我要征服它,希望有一天能成长为他那样的级别。

挥手间,强弩灰飞烟灭。

从现在开始吧。。

下面是我的处女作.

用到的知识点都是最基本的, 高深的还不会,还要慢慢积累,有什么不足之处,还望各位大神指点指点小弟。


需求: 发现想自动化下载网络上的一些歌曲,不用人工下载。

实现: 用最简单的perl语法实现

说明: 最多限定了下载100首。


注意:

my $list_url = "http://music.baidu.com/top/new";

#http://music.baidu.com/top/dayhot

这个地址可以变更成自己想要的。


___________________________________________________________________

#!/usr/bin/perl

# Date: 2014.02.13 # Author: arika # Info: jinfei09@126.com use strict; use LWP::Simple; use IO::File; my $url_root = "http://music.baidu.com"; my $list_url = "http://music.baidu.com/top/new"; my $main_url_file = "urls.txt"; my $songItem = "songItem"; my $songDir = "song"; my $count = 0; my $song_max = 100; qx(mkdir -p $songItem $songDir); sub get_song_url { ??? (my $all_url_file,my $all_song_url)= @_; ??? open(IN,">$all_url_file") or die "Can not open $all_url_file,because: $!"; ??? print "Begin downloading $all_song_urln"; ??? print IN get($all_song_url); ??? close IN; } sub start_get_url { ??? my $file = shift; ??? open(IN,"<$file") or die "Can not open $file,$!"; ??? while(<IN>) { ??????? if(/songItem/) { ??????????? $count++; ??????????? my $one_song = ($_=~m/song-item-hook { 'songItem':(.*)}/); ??????????? my $one_song_info = ($1 =~ m/{ 'sid': '(.*)','sname': '(.*)','author': '(.*)' }/); ??????????? my $song_name = "$2_$3.mp3"; ??????????? my $song_url = "$url_root/song" . "/$1"; ??????????? my $song_key_file = "songItem/$1"; ??????????? my $song_local_path = "song/$song_name"; ??????????? open(FILE,">$song_key_file") or die "Can not open $song_key_file:$!"; ??????????? print FILE get($song_url); ??????????? close FILE; ??????????? open(FILEHANDLE,"<$song_key_file") || die "Can not open $song_key_file: $!"; ??????????? while(<FILEHANDLE>){ ??????????????? if(/data_url="(.*)"/){ ??????????????????? open(FILESONG,">$song_local_path") or die "Can not open $song_local_path:$!"; ??????????????????? print ">>>>>>Begin download [$count][$song_name]n"; ??????????????????? print "URL[$count]: " . $1 . "n"; ??????????????????? print FILESONG get($1); ??????????????????? close FILESONG; ??????????????????? print "<<<<<<Success downloadnn"; ??????????????? } ??????????? } ??????????? close FILEHANDLE; ??????? } ??????? if($count eq $song_max) {last;} ??? } ??? close IN; } &get_song_url($main_url_file,$list_url); &start_get_url($main_url_file); qx(rm -rf $main_url_file $songItem);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读