php获取百度MP3(baidu mp3)下载列表

作者:enenba | 发表于:2012-06-27 10:03 | 分类:php采集

     百度mp3在近几年已经不给出下载地址,所以想用php获取已经不能直接获取下载地址,想要采集MP3的下载地址可以在baidu mp3在线播放器的歌曲url做采集。百度也做了相应的防盗链处理,不能直接盗链在线播放,只能下载。

不多说,上代码。

     php源码说明: 通过输入歌曲 得到百度mp3 第一页的歌曲名、歌手和歌曲url。文件编码请使用gb2312

 

 

<?php
/*
php获取百度MP3 by enenba  2012-6-27
$param  str 歌曲名
$return array $result
		$result['songurl'] =>歌曲url
		$result['singer']  =>歌手
		$result['songname']=>歌曲名
*/
function get_baidu_mp3($songname) {
	$songname = urlencode($songname);
	$url = 'http://mp3.baidu.com/m?word='.$songname;
	$httptype = function_exists('curl_init'); //使用curl 还是 file_get_contents
	if (!$httptype) {
		$html = file_get_contents($url);
	}else{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_URL, $url);
		curl_setopt($ch, CURLOPT_HEADER, 1);
		// 返回结果,而不是输出它
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$html = curl_exec($ch);
		$info = curl_getinfo($ch);
		if ($html === false) {
			echo "cURL Error: " . curl_error($ch);
		} 
	}
	
	$search = '#http://mp3\.baidu\.com/d\?song=[^"]*#i';
	preg_match_all($search,$html,$r1);
	set_time_limit(30);
	foreach ($r1[0] as $v){
		if (!$httptype) {
			$html = file_get_contents($v);
		}else{		
			curl_setopt($ch, CURLOPT_URL, $v);
			curl_setopt($ch, CURLOPT_HEADER, 1);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$html_1 = curl_exec($ch);
			$info = curl_getinfo($ch);
			if ($html === false) {
				echo "cURL Error: " . curl_error($ch);
			} 
		}
		
		$search = '#href="/j\?j=2&url=([^"]*)#i';
		preg_match($search,$html_1,$r2);
		$result['songurl'][] = $r2[1];

		$search = '#歌手:<a href=[^>]*>([^<]*)</a>#';
		preg_match($search,$html_1,$r3);
		$result['singer'][] = $r3[1];
		
		$search = '#<title>下载歌曲:([^<]*)<\/title>#';
		preg_match($search,$html_1,$r4);
		$result['songname'][] = $r4[1];

		//echo $r2[1].'<br />';
	}
	if ($httptype) {curl_close($ch);}
	return $result;
}

//以下为测试内容
$songname = '伤不起';
$r = get_baidu_mp3($songname);
echo '输出的连接为: (右键另存下载歌曲)<br /><br />';
echo '<ol>';
$count = count($r["songname"]);
for($n=0;$n<$count;$n++) {
	$r['songurl'][$n] = urldecode($r['songurl'][$n]);
	echo '<li>歌曲名:'.$r["songname"][$n].' - 歌手:'.$r["singer"][$n].'<br />';
	echo '<a href="'.$r["songurl"][$n].'" target="_blank">'.$r["songurl"][$n].'</a>'."<br /><br /></li>\n";
}
echo '</ol>';
?>

上效果图:

php获取百度mp3

end....

 

 

上一篇: 我猜猜你的em博客使用的是什么模板   |   下一篇:php采集li标签的链接与文本内容» 标签: php采集 php获取 百度MP3 演示

评论:

2012-06-28 12:06

来顶一下博主,欢迎回访哦~~~

2012-06-27 10:46

好文,收藏一下。

2012-06-27 10:18

不错的文章,好文章嘛必须支持下。.

2012-06-27 10:25

这么快!!!我刚发的文章