百度音乐接口
百度其实有提供一个免费的音乐接口
http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$歌手$$$$
返回的形式是以XML的格式返回;
其中encode中就是歌曲的地址,不过百度对它进行了加密,加密的部分是一串数字后面的那些乱码;
decode中就是encode中加密的内容,所以我们只要把decode中的部分替换中encode中就可以了,下面给的是PHP代码
$music="浮夸"; $name="陈奕迅"; $url="http://box.zhangmen.baidu.com/x?op=12&count=1&title=".$music."$$".$name."$$$$"; $xml = simplexml_load_file($url,null, LIBXML_NOCDATA) ; //创建 SimpleXML对象(后面两个参数是为了能读取到<![CDATA[]]>中的数据) $music_url=$xml->url; $encode=$music_url->encode; $decode=$music_url->decode; $a="#/[0-9]+/(.+)$$#U"; //正则匹配(括号中的部分才是我们要替换的) preg_match($a,$encode,$c); $change=array($c[1]=>$decode); $music_url=strtr($encode,$change); echo $music_url;
而如果你在使用simplexml_load_file的时候出现“parser error : switching encoding”的错误
那么,恭喜你,你无法使用百度音乐的接口
原因是百度音乐盒只提供给中国内地的用户,香港主机和国外主机都无法使用
之前用的香港主机所以被这个问题坑了几天,file_get_contents直接抓的时候以后一直是乱码,弄了好几天都没解决
直到无意中想试一下只抓取“http://box.zhangmen.baidu.com/”,然后就弹出了只提供给中国内地用户的警告
解决方法是只能找个人帮忙写个页面抓取,然后你再抓取他的页面了
之前找到了一个接口http://api.94qing.com/,里面提供了挺多内容的(包括百度音乐的接口),有需要的也可以用一下

浙公网安备 33010602011771号