Blogger Information
Blog 81
fans 1
comment 0
visits 124546
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php curl采集JD用户评论
有什么是忘不了的的博客
Original
1103 people have browsed it

先说一下我遇到的问题吧。

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搞到。。。

效果图:

((Y)_U2~[DW5EQ5DG1)1QKG.png



Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post