需求:通过淘宝或天猫商品链接,获取商品的评论。有疑问请直接留言。详细代码见:https://github.com/wangyupeng/code/blob/master/get_comment_list.php header("Content-type: text/html; charset=utf-8");function get_taobao_item_id($url){ // 解析url
需求:通过淘宝或天猫商品链接,获取商品的评论。 有疑问请直接留言。 详细代码见:https://github.com/wangyupeng/code/blob/master/get_comment_list.php
header("Content-type: text/html; charset=utf-8");
function get_taobao_item_id($url){
// 解析url
$urls=parse_url( $url );
// 提取url,得到商品id
// 一淘商品
if ((strpos(@$urls['host'], 'etao.com') > 0) && (strpos(@$urls['host'], 'detail.etao.com')==0)) {
$url_array = explode('.',$urls['path']);
$id = ltrim($url_array[0],'/');
// 淘宝商品
} else if ((strpos(@$urls['host'], 'taobao.com') > 0) && (strpos(@$urls['host'], 'item.taobao.com')==0)) {
parse_str($urls['query'],$url_array);
$id = @$url_array['id'] ? $url_array['id'] : "" ;
// 天猫商品
} else if ((strpos(@$urls['host'], 'tmall.com') > 0 ) && (strpos(@$urls['host'], 'detail.tmall.com')==0)) {
parse_str($urls['query'],$url_array);
$id = @$url_array['id'] ? $url_array['id'] : "" ;
// 非法商品
}else{
return false;
}
return $id;
}
/**
* 下载淘宝页面
* @param url $url
* @return string
*/
function download_page($url) {
// 创建一个新cURL资源
$ch = curl_init();
// 设置URL和相应的选项
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, "http://www.taobao.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
// 抓取URL并把它传递给浏览器
$output = curl_exec($ch);
// 关闭cURL资源,并且释放系统资源
curl_close($ch);
return $output;
}
/**
* 获取淘宝评论URL
* @param unknown $id
* @return string
*/
function get_taobao_comment_url($id){
$pages = download_page('http://item.taobao.com/item.htm?id='.$id);
preg_match_all('/data-listApi="(.*)"/Usi', $pages, $commont);//评论列表地址
$comment_list_url = $commont[1][0].'¤tPageNum=1&rateType=&orderType=sort_weight&showContent=1&attribute=&callback=?';
return $comment_list_url;
}
/**
* 获取天猫评论URL
* @param unknown $id
* @return string
*/
function get_tmall_comment_url($id){
$comment_list_url = 'http://rate.tmall.com/list_detail_rate.htm?itemId='.$id.'&spuId=¤tPage=1&sellerId=&order=0&forShop=1&callback=?';
return $comment_list_url;
}
/**
* 根据商品URL获取评论
* @param string $url 淘宝或天猫商品链接地址
* @param int $maxPage 采集最大页数,设置为NULL则获取全部评论
* @return multitype:multitype:NULL unknown multitype:unknown
*/
function get_comment_list($url, $maxPage=5) {
// 数据集
$data = array();
// 评论总页数,初始共一页,程序自动获取
$lastPage = 1;
if (strpos($url, 'tmall.com') === false) {
// 淘宝
$id = get_taobao_item_id($url);
$url = get_taobao_comment_url($id);
for ($i=1; $i<=$lastPage; $i++) {
$url = preg_replace('/PageNum=(\d+)&/','PageNum='.$i.'&', $url);
//抓取评论
$product_comment_list = download_page($url);
$product_comment_list = iconv('gbk','utf-8//IGNORE', $product_comment_list);
preg_match('#\((.*?)\)#U', $product_comment_list, $comment_list_matchs);
$content = json_decode($comment_list_matchs[1], true);
$lastPage = $content['maxPage'];
// 重组数据
foreach ($content['comments'] as $item) {
$rate = array();
$rate['username'] = $item['user']['nick'];
$rate['content'] = $item['content'];
$rate['sku'] = $item['auction']['sku'];
$rate['datetime'] = $item['date'];
$data[] = $rate;
}
// 超出指定页,退出。防止获取全部评论
if ($maxPage && ($i >= $maxPage)) {
break;
}
}
} else {
// 天猫
$id = get_taobao_item_id($url);
$url = get_tmall_comment_url($id);
for ($i=1; $i<=$lastPage; $i++) {
$url = preg_replace('/currentPage=(\d+)&/','currentPage='.$i.'&', $url);
//抓取评论
$product_comment_list = download_page($url);
$product_comment_list = iconv('gbk','utf-8//IGNORE', $product_comment_list);
preg_match('#\((.*?)\)#U', $product_comment_list, $comment_list_matchs);
$content = json_decode($comment_list_matchs[1], true);
$content = $content['rateDetail'];
$lastPage = $content['paginator']['lastPage'];
foreach ($content['rateList'] as $item) {
$rate = array();
$rate['username'] = $item['displayUserNick'];
$rate['content'] = $item['rateContent'];
$rate['sku'] = $item['auctionSku'];
$rate['datetime'] = $item['rateDate'];
$data[] = $rate;
}
// 超出指定页,退出。防止获取全部评论
if ($maxPage && ($i >= $maxPage)) {
break;
}
}
}
return $data;
}
// 获取淘宝评论测试
$url = 'http://item.taobao.com/item.htm?id=14150972514';
$data = get_comment_list($url);
var_dump($data);
// 获取天猫评论测试
$url = 'http://detail.tmall.com/item.htm?id=39969082707';
$data = get_comment_list($url);
var_dump($data);
原文地址:php curl 通过淘宝链接抓取商品评论, 感谢原作者分享。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号