博主信息
博文 81
粉丝 1
评论 0
访问量 146917
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
php curl采集JD用户评论
有什么是忘不了的的博客
原创
1372人浏览过

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

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



本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学