なぜこの機能をやりたいのですか?それは、少し前に Taoke Web サイトを構築していたときに、Taobao 製品のバイヤーのショーをキャプチャできないか考えたからです。いくつかの試行錯誤の結果、淘宝網製品のユーザー評価情報は Ajax を通じて取得されていることが判明しました。URL を盗聴することにより、コメント データのリクエスト インターフェイスが
https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3¤tPage=1&append=0&c/span>
実際、上記のパラメータの多くが含まれていることがわかりました。 itemId は商品の ID、currentPage は現在のページ、picture が 1 の場合、購入者のショーがキャプチャされているため、picture パラメータは 1 である必要があります。
上記のインターフェースに直接アクセスすると、以下のようなリクエスト結果が得られます。
リクエスト結果が jsonp 形式であることを見てショックを受けましたが、解析方法がわかりません。しかし、別の方法を試してみてください。PHP の通常の解析を直接使用するのも悪くありません。試してみると、次の図に示すように、購入者のショーのコメント内容と画像コンテンツを正しく解析できます。効果は良好です。コードはコメントの内容を認識します。バイヤーショーの写真をキャプチャしてキャプチャするには、次のコードを使用します:
<?php$url = "https://rate.tmall.com/list_detail_rate.htm?itemId=524394294771&spuId=341564036&sellerId=100414600&order=3¤tPage=1&append=0&c>;$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 "".str_replace('","rateDate":"',' ',str_replace('","reply"','',str_replace('"rateContent":"','',$matchcomments_only[0])))."";$pattern3 = '/img.alicdn(.+?).jpg/is';preg_match($pattern3, $match[0][$i], $matchpic_only);echo '$matchpic_only[0].'" width="120" _src="http://'.$matchpic_only[0].'"/>'; }/*匹配一张图片 $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 "".$matchpic_only[0].""; }*//*匹配所有图片 $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 ""; foreach($arr as $newstr){ echo ''; } echo ""; }*/?>