php采集百度MP3 TOP500歌曲

作者:enenba | 发表于:2012-07-14 00:36 | 分类:php采集

   最近又写了php获取百度top500的歌曲名,因为百度歌曲的排行是实时更新的,写出了匹配规则后基本没什么大问题。就是下载需要时间比较长,百度top500的页面数据还是挺大的。

结果图:

点击查看原图

上源码:

 

<?php
$start_time = microtime(true);
$url = 'http://list.mp3.baidu.com/top/top500.html';
$httptype = function_exists('curl_init');
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);
}
$running_1 = microtime(true) - $start_time;
echo '下载用时:'.number_format($running_1, 10, '.', '')."s<br />\n";
$search ='/<div class="rank"><em[^>]+>(.*?)<\/em><\/div>.*?<div class="status"><i class="([^"]*?)" title="[^"]*?">[^<]*?<\/i><\/div>.*?&word=([^\+"]+?)\+([^&"]*?)&lm=-1/is';
preg_match_all($search,$html,$r,PREG_SET_ORDER);
$running_2 = microtime(true) - $start_time - $running_1;
echo '匹配用时:'.number_format($running_2, 10, '.', '')."s<br />\n";

echo "<br />排名 - 歌名 - 歌手 <br /><br />\n";
foreach ($r as $v){
	echo '<a href="http://mp3.baidu.com/m?word='.$v[3].'" target="_blank" title="百度一下“'.$v[3].'”"><img src="baidusort.gif" /></a> ';
	echo '<i class="'.$v[2].'">&nbsp;</i>'.$v[1].' - '.$v[3].' - '.$v[4]. '<br />'."\n";
}

?>

 

勉强上一个演示

end

上一篇: 让URL只允许一些字符的正则表达式   |   下一篇:正则中需要转义的特殊字符» 标签: php函数 php采集 php获取 百度MP3

评论:

2012-10-06 16:32

收藏了

2012-08-14 11:53

请问能算出百度mp3的真实地址码

2012-08-14 12:09

目前还不行

2012-08-06 21:12

常来看看,看有什么学到的。。这次又让我多知道几个函数了。呵呵

2012-07-19 16:33

玩代码的高手

2012-07-20 11:12

没事玩玩代码。反正无聊

2012-07-16 19:26

高手  我很久没来了

2012-07-18 00:28

我也好久不来了