php 解析京东 json,京东商品评论接口数据抓取

抓取过程中,遇到两个小问题:

1、请求头中没放Referer 和 User-Agent, 导致接口内容未返回

2、php 的 json_decode 解析失败,返回了NULL, 使用json_last_error(); 检查错误格式得出结果是 “5”, 经检查返回的接口数据内容的编码格式居然是 EUC-CN 导致json_decode失败

json_last_error错误msg对照表:

0 = JSON_ERROR_NONE

1 = JSON_ERROR_DEPTH

2 = JSON_ERROR_STATE_MISMATCH

3 = JSON_ERROR_CTRL_CHAR

4 = JSON_ERROR_SYNTAX

5 = JSON_ERROR_UTF8

上采集代码:

ini_set("display_errors", "On");//打开错误提示

ini_set("error_reporting",E_ALL);//显示所有错误

header("Content-Type: text/html; charset=utf-8");

$header = [];

$header[] = 'Referer: https://item.jd.com/59080455549.html';

$header[] = 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36';

$url = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv89&productId=59080455549&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_HTTPHEADER, $header);

$output = curl_exec($ch);

curl_close($ch);

$output = str_replace('fetchJSON_comment98vv89(', '', $output);

$output = str_replace('}]});', '}]}', $output);

$encode = mb_detect_encoding($output, array("ASCII",'UTF-8',"GB2312","GBK",'BIG5'));

if($encode == 'UTF-8'){

echo $encode;

}else{

$output = mb_convert_encoding($output, 'UTF-8', $encode);

}

$result = json_decode($output, true);

// echo json_last_error();

print_r($result);

exit;

本文仅供curl网络请求和PHP函数运用的学习使用,请勿对他人服务器发恶意请求,危害网络安全

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值