Home >Backend Development >PHP Tutorial >抓取不到html,curl和file_get_contents都抓不到,但是页面可以直接打开。

抓取不到html,curl和file_get_contents都抓不到,但是页面可以直接打开。

WBOY
WBOYOriginal
2016-06-23 13:23:311055browse

抓取不到html,curl和file_get_contents都抓不到,但是页面可以直接打开。

请教

网址如下
https:/count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107

为什么我怎么都抓不到内容呢,始终是空


回复讨论(解决方案)

贴出你的代码来看看

$ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);echo  $output;

试试 curl 设置下 CURLOPT_USERAGENT,浏览器标识

$ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);echo  $output;



怎么取到这个4905,谢谢,在线等,马上结帖。
"ICCP_1_522177046867":4905

他不过是返回了一个供 jsonp 调用的函数:
jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4914});

截取圆括号中间的内容,用 json_decode 函数解码即可

他不过是返回了一个供 jsonp 调用的函数:
jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4914});

截取圆括号中间的内容,用 json_decode 函数解码即可



$arr = json_decode($response, false);
var_dump($arr);
结果$arr是Null

拿去玩吧,

<?php//$jsonp=file_get_contents('https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107');$jsonp='jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4915});';preg_match_all('/\d{1,}}/',$jsonp,$arr);echo trim($arr[0][0],'}');

更新:

<?php//$jsonp=file_get_contents('https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107');$jsonp='jsonp107({"SM_368_dsr-1097280647":{v:0,nv:100,m_UFB:0,m:4.89661,m_g:20.15,s_UFB:0,s:4.8744,s_g:31.49,c_UFB:0,c:4.87867,c_g:39.55,gp:100.00,ss:290159,hdr:true},"ICCP_1_522177046867":4915});';preg_match_all('/\d{1,}/',$jsonp,$arr);echo array_reverse($arr[0])[0];

敢不敢下次提问标题起个好点的名字,自己不会玩扯函数不行

<meta charset="utf-8"><?php $ch = curl_init();$url='https://count.taobao.com/counter3?keys=SM_368_dsr-1097280647,ICCP_1_522177046867&callback=jsonp107';curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);   curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0);curl_setopt($ch, CURLOPT_HEADER, 0);$output = curl_exec($ch);curl_close($ch);preg_match_all("/(?:\()(.*)(?:\))/i", $output, $ok);$str=$ok[1][0];$str=str_replace('{"',"{",$str);$str=str_replace('":',":",$str);$str=str_replace(',"',",",$str);//不会正则只能这样苦逼的替换了。。反正就是把他重构为json格式$str=str_replace('{','{"',$str);$str=str_replace(':','":',$str);$str=str_replace(',',',"',$str);$obj=json_decode($str);var_dump($obj);echo "这是你要的ICCP_1_522177046867:".$obj->ICCP_1_522177046867;?>

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn