已掉线,重新登录

首页 > 绿虎论坛 > 历史版块 > 编程 > PHP

标题: 求PHP&JSON大神帮忙

作者: @Ta

时间: 2016-07-06

点击: 15037

i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=关键词&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887&jsonpCallback=jsonp5

求大神帮忙写个实例,抓取上面这个接口返回的一些数据,逐条列出,大神求帮忙,搞了几天,硬是解析不出来。

[隐藏样式|查看源码]


『回复列表(22|隐藏机器人聊天)』

1. 如果用php,思路是把 jsonp5(和末尾的)截去,然后json_decode()转成数组,然后输出。用js的话定义一个jsonp5(){}函数解析json就好了。

歌手名:[data][song][list][0~20][singer][name]

歌曲id:[data][song][list][0~20][songid]

几种比特率/格式的歌曲大小[data][song][list][0~20][格式](格式可以是[size128]、[size320]、[sizeape]、[sizeflac]、[sizeogg])

播放链接:[data][song][list][0~20][songurl]

目测是MV的id:[data][song][list][0~20][vid]

for 0到20就可以全部列出了
(/@Ta/2016-07-06 23:54//)

2. <?php

$url = 'http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=%E8%80%81%E5%8F%B8%E6%9C%BA&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887&jsonpCallback=jsonp5';

$data = file_get_contents($url);
$data = substr($data,7,-1);
$data = json_decode($data,true);
var_dump($data);

?>
(/@Ta/2016-07-06 23:29//)

3. @hnhhcxy,默默问下 这是做什么的?
(/@Ta/2016-07-06 23:30//)

4. @懒人,QQ音乐搜索接口
(/@Ta/2016-07-06 23:52//)

5. @cnhong,能给个实例吗?
(/@Ta/2016-07-07 00:01//)

6. @hnhhcxy,2楼就可以啊
(/@Ta/2016-07-07 00:03//)

7. @cnhong,能按你的方法给个获取歌曲ID的实例吗,我学习学习,我还是不太懂,大神
(/@Ta/2016-07-07 00:16//)

8.
<?php
$url = 'http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=jsonp&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=林俊杰&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887&jsonpCallback=jsonp5';

$data = file_get_contents($url);
$data = substr($data,7,-1);
$data = json_decode($data,true);
//print_r($data);
$nr='result:<hr>';
for($i=0;$i<20;$i++){
	$songname=$data[data][song]['list'][$i][songname];
	$n=$i+1;
	$id=$data[data][song]['list'][$i][songid];
	$url=$data[data][song]['list'][$i][songurl]?$data[data][song]['list'][$i][songurl]:'无';
	
	$nr.=$n.'、歌曲名:'.$songname;
	$nr.='(id:'.$id.')<br>';
	$nr.='网址:'.$url.'<hr>';
}
echo $nr;

?>
(/@Ta/2016-07-07 00:40//)

9. @cnhong,感谢,早点睡了,不早了,明天研究研究。
(/@Ta/2016-07-07 00:33//)

10. 把format换成json就能直接搞了🙄
jsonp是给js跨域的🙄
<?php
$url='http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=关键词&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=1&remoteplace=txt.mqq.all&_=1467813793887';
$result=json_decode(file_get_contents($url));
echo '<pre>';
var_dump($result);
echo '</pre>';
(/@Ta/2016-07-07 08:01//)

11. @hnhhcxy
<?php
header("Content-type: text/html; charset=utf-8"); 
error_reporting(0);
$key="周杰伦";
$a=json_decode(file_get_contents("http://i.y.qq.com/s.music/fcgi-bin/search_for_qq_cp?format=json&w=".$key."&n=50"),true);
for($i=0;$i<=$a['data']['song']['curnum']-1;$i++){
	echo '<a href="'.$a['data']['song']['list'][$i]['songurl'].'">'.$a['data']['song']['list'][$i]['songname'].'</a><br>';
}
?>
(/@Ta/2016-07-07 10:01//)

12. @小男生,歌手名的那个怎么获取呢?
(/@Ta/2016-07-07 13:22//)

13. @小男生

'.$a['data']['song']['list'][$i]['singer'][$i]['name'].'

用这句获取歌手名的话,只有第一个才能显示歌手名,求解
(/@Ta/2016-07-07 14:14//)

14. @cnhong,歌手名获取不成功
(/@Ta/2016-07-07 14:16//)

15. '.$a['data']['song']['list'][$i]['singer']['name'].'
(/@Ta/2016-07-07 14:22//)

16. @cnhong,这个获取不到,
'.$a['data']['song']['list'][$i]['singer'][$i]['name'].'
这个的话只能获取到第一个,后面的就获取不到
(/@Ta/2016-07-07 14:25//)

17. @hnhhcxy,我现在没在电脑前
(/@Ta/2016-07-07 14:26//)

18. @cnhong,感谢了,如果可以的话,有空的时候帮下忙。
(/@Ta/2016-07-07 14:29//)

19. ...
(/@Ta/2016-07-07 14:32//)

下一页 1/2页,共22楼

回复需要登录

8月29日 06:31 星期五

本站由hu60wap6驱动

备案号: 京ICP备18041936号-1