先说一下我遇到的问题吧。
1、页面js报错,说'src'不存在。
2、拿到数据后json_decode()返回NULL。
解决:
1、js报错,我在本地(环境下通过localhost访问的php文件),放到线上环境,报错消失。
2、返回NULL,首先我们拿到数据不是纯json格式的,无法直接转换需要 去头去尾,并且编码格式也不是UTF-8的需要转码。
下面是我写的demo:
php文件:
<?php //访问的接口 $url = $_POST['url']; //开始分页下标 $offset = empty($_POST['offset'])?0:$_POST['offset']; //结束分页下标 $id = $_POST['page']; if(!$url||!$id){ echo '请输入必要信息'; exit; } //去除你传入的url中的分页数, $leftNum = strpos($url,'page=')+5; $rigetNum = strpos($url,'&pageSize'); $urlLeft = substr($url,0,$leftNum); $urlRight = substr($url,$rigetNum); $i = $offset; header('Content-Type:text/html;charset=utf-8'); while ($i<$id){ //重新拼接访问url地址 $url = $urlLeft . $i . $urlRight; $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", CURLOPT_POSTFIELDS => array('a' => '123','b' => '456'), CURLOPT_HTTPHEADER => array( "Cookie: JSESSIONID=768126C3E357B9D82367536A90FA697F.s1; jwotest_product=99" ), )); $output = curl_exec($curl); curl_close($curl); //这里的'fetchJSON_comment98'字符串你要自己看一下与可能不同。 //去除得到的json数据的头部和尾部数据。得到一个和php可以转换的json数据。 $output = str_replace('fetchJSON_comment98(', '', $output); $output = str_replace('}]});', '}]}', $output); //检查编码格式 $encode = mb_detect_encoding($output, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5')); if($encode == 'UTF-8'){ //echo $encode; }else{ //编码转换,转成UTF-8 $output = mb_convert_encoding($output, 'UTF-8', $encode); } //转码转成数组 $result = json_decode($output, true); //判断是否是数组,防止空数据,下面的foreach保错。 if(!is_array($result)){ break; } foreach ($result as $k=>$v){ //数组里还有其他的一些杂数据,需要去除掉。我这个在以后的日子里不一定准,你要自己查看一下在做过滤。 if (is_array($v)&&isset($v[0]['content'])) { foreach ($v as $key => $value) { //直接输出到页面上并换行 echo $value['content']."<br/>"; ///着里我是想存入文件的,需要可以打开,文件目录自己设置一下。 // file_put_contents('static/log/log.txt',$value['content'].PHP_EOL,FILE_APPEND); } } } $i++; }
html页面:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="./index.php" method="POST" > <table> <tr> <td>网址</td> <td><input type="text" name="url" placeholder="输入商品用户评论接口地址" style="width: 300px"></td> </tr> <tr> <td>开始页数</td> <td><input type="text" name="offset" placeholder="输入开始的页数,默认为0" style="width: 300px"></td> </tr> <tr> <td>结束页数</td> <td><input type="text" name="page" placeholder="输入结束的页数" style="width: 300px"></td> </tr> <tr> <tr> <td></td> <td><input type="submit" value="提交"></td> </tr> </table> </form> </body> </html>
它的评论接口我相信你可以自己通过f12搞到。。。
效果图: