用PHP抓取淘寶商品的用戶曬單評論+圖片實例

爲何想起來作這個功能?是由於前段時間在作一個淘客網站的時候,想到是否能抓取到淘寶商品的買家秀呢?通過一番折騰發現,淘寶商品用戶評價信息是經過Ajax來調取的,經過嗅探網址發現,評論數據的請求接口是:php

https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=1&callback=jsonp2339

其實上面不少參數也很容易理解,itemId是商品的ID,currentPage是當前頁,picture爲1時顯示有圖的評價,既然是抓取買家秀,那麼picture參數必定要爲1了。json

若是你直接去訪問上面的接口時,會獲得以下圖所示的請求結果:app

看到請求結果是jsonp格式我就蛋碎了,我不知道如何去解析,可是換種思路,直接用PHP的正則去解析也何嘗不可嘛,經過嘗試,已經正確的可以解析到評論內容和買家秀的圖片內容,如圖:curl

效果不錯,代碼實現了評論內容的抓取、買家秀圖片的抓取,代碼奉上:jsonp

<?php
$url = "https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3&currentPage=1&append=0&content=1&tagId=&posi=&picture=1&callback=jsonp2339";
$ch2 = curl_init();
curl_setopt($ch2, CURLOPT_URL, $url);
curl_setopt($ch2, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch2, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, TRUE);
$texts = curl_exec($ch2);
curl_close($ch2);
//echo $texts;
$pattern = '/"pics"(.+?)","reply"/is';
preg_match_all($pattern, $texts, $match);
for($i=0;$i<count($match[0]);$i++){
    $pattern2 = '/"rateContent":"(.+?)."reply"/is';
    preg_match($pattern2, $match[0][$i], $matchcomments_only);
    echo "<p>".str_replace('","rateDate":"',' ',str_replace('","reply"','',str_replace('"rateContent":"','',$matchcomments_only[0])))."</p>";

    $pattern3 = '/img.alicdn(.+?).jpg/is';
    preg_match($pattern3, $match[0][$i], $matchpic_only);
    echo '<img src="http://'.$matchpic_only[0].'" width=120>';
}

/*匹配一張圖片
$pattern = '/"pics"(.+?)","position"/is';
preg_match_all($pattern, $texts, $matchpic);
for($i=0;$i<count($matchpic[0]);$i++){
    $pattern3 = '/img.alicdn(.+?).jpg/is';
    preg_match($pattern3, $matchpic[0][$i], $matchpic_only);
    echo "<p>".$matchpic_only[0]."</p>";
}*/

/*匹配全部圖片
$pattern = '/"pics"(.+?)","position"/is';
preg_match_all($pattern, $texts, $matchpic);
for($i=0;$i<count($matchpic[0]);$i++){
    $pics_str=str_replace('"pics":["//','',str_replace('"],"picsSmall":"","position"','',$matchpic[0][$i]));
    $arr = explode('","//',$pics_str);
    echo "<p>";
    foreach($arr as $newstr){
        echo '<img src=http://'.$newstr.' width=100 >';
    }
    echo "</p>";
}*/
?>

有什麼解析jsonp格式的好方法呢?求大神~~~網站

相關文章
相關標籤/搜索