濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > php爬取天貓和淘寶商品數(shù)據(jù)

php爬取天貓和淘寶商品數(shù)據(jù)

熱門(mén)標(biāo)簽:400電話辦理福州市 江蘇外呼電銷(xiāo)機(jī)器人報(bào)價(jià) 深圳外呼系統(tǒng)收費(fèi) 長(zhǎng)沙crm外呼系統(tǒng)業(yè)務(wù) 電話機(jī)器人危險(xiǎn)嗎 400電話申請(qǐng)方法收費(fèi) 南寧高頻外呼回?fù)芟到y(tǒng)哪家好 專(zhuān)業(yè)電話機(jī)器人批發(fā)商 離石地圖標(biāo)注

一、思路

最近做了一個(gè)網(wǎng)站用到了從網(wǎng)址爬取天貓和淘寶的商品信息,首先看了下手機(jī)端的網(wǎng)頁(yè)發(fā)現(xiàn)用的react,不太了解沒(méi)法搞,所以就考慮從PC入口爬取數(shù)據(jù),但是當(dāng)爬取URL獲取數(shù)據(jù)時(shí)并沒(méi)有獲取價(jià)格,庫(kù)存等的信息,仔細(xì)研究了下發(fā)現(xiàn)是異步請(qǐng)求了另一個(gè)接口,但是接口要使用refer才能獲取數(shù)據(jù),于是就通過(guò)以下方式寫(xiě)了一個(gè)簡(jiǎn)單的爬蟲(chóng),用于爬取商品預(yù)覽圖和商品的第一個(gè)分類(lèi)的價(jià)格、庫(kù)存等。

二、實(shí)現(xiàn)

代碼如下:

function crawlUrl($url){
import('PhpQuery.Curl');
 $curl=new \Curl();
 $result = $curl->read($url);
 $content = mb_convert_encoding( $result['content'], 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );
 $myres=array();
 if(strrpos($url,'taobao.com')!=false) {
  //匹配是否下架
  if(strpos($content,'此寶貝已下架')!==false){
   return false;
  }
  preg_match("|itemId   : '(.*)'|isU", $content, $match);
  $item_id=$match[1];
  preg_match("|sellerId   : '(.*)'|isU", $content, $match);
  $sellet_id=$match[1];
  preg_match("|title>(.*)/title>|isU",$content,$match);
  $title=$match[1];
  //價(jià)格庫(kù)存信息
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, 'https://detailskip.taobao.com/service/getData/1/p1/item/detail/sib.htm?itemId='.$item_id.'sellerId='.$sellet_id.'modules=dynStock,qrcode,viewer,price,duty,xmpPromotion,delivery,upp,activity,fqg,zjys,amountRestriction,couponActivity,soldQuantity,originalPrice,tradeContractcallback=onSibRequestSuccess');
  $opt[CURLOPT_HEADER]=false;
  $opt[CURLOPT_CONNECTTIMEOUT]=15;
  $opt[CURLOPT_TIMEOUT]=300;
  $opt[CURLOPT_AUTOREFERER]=true;
  $opt[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11';
  curl_setopt_array($ch,$opt);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($ch,CURLOPT_REFERER,$url);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  $out_put=curl_exec ($ch);
  curl_close ($ch);
  $res=str_replace('onSibRequestSuccess(',"",$out_put);
  $res=rtrim($res,');1');
  $result=json_decode($res,true);
  //查詢(xún)出圖片信息
  preg_match('|ul id="J_UlThumb" class="tb-thumb tb-clearfix">(.*)/ul>|isU', $content, $match);
  preg_match_all('/img data-src="(.*?)" \//', $match[1], $images);

  $myres['title']=str_replace('-淘寶網(wǎng)','',$title);

  $myres['price']=current($result['data']['originalPrice']);

  $myres['act_price']=current($result['data']['promotion']['promoData']);

  $myres['stock']=$result['data']['dynStock']['stock'];

  $myres['banners']=$images[1];
 }else{
  //匹配是否下架
  if(strpos($content,'此寶貝已下架')!==false){
   return false;
  }
  $start=strpos($url,'id=');
  $item_id=substr($url,$start+4,12);
  if(!is_numeric($item_id)){
   $start=strpos($url,'?id=');
   $end=strpos($url,'spm');
   $item_id=substr($url,$start+4,$end-$start-4);
  }
  preg_match("|title>(.*)/title>|isU",$content,$match);
  $title=$match[1];
  $myurl='https://mdskip.taobao.com/core/initItemDetail.htm?cachedTimestamp=1500562177777queryMemberRight=truecartEnable=trueofflineShop=falseaddressLevel=2itemId='.$item_id.'tryBeforeBuy=falseisAreaSell=falsetmallBuySupport=trueisPurchaseMallPage=falsehousehold=falseisForbidBuyItem=falseservice3C=falseisRegionLevel=falseshowShopProm=falseisSecKill=falsesellerPreview=falseisUseInventoryCenter=falseisApparel=truecallback=setMdskiptimestamp=1500562172109isg=AiUlDZFWmP/sMgVurQSILU3Ytet/Zdisisg2=Ajk51JIhRFqKzxmiNPP6dkYxSKXT7iySkzSTeVtu9WDf4ll0o5Y9yKdyEtHu';
  //價(jià)格庫(kù)存信息
  $ch = curl_init();
  curl_setopt ($ch, CURLOPT_URL, $myurl);
  $opt[CURLOPT_HEADER]=false;
  $opt[CURLOPT_CONNECTTIMEOUT]=15;
  $opt[CURLOPT_TIMEOUT]=300;
  $opt[CURLOPT_AUTOREFERER]=true;
  $opt[CURLOPT_USERAGENT]='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.47 Safari/536.11';
  curl_setopt_array($ch,$opt);
  curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($ch,CURLOPT_REFERER,$url);
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  $out_put=curl_exec ($ch);
  curl_close ($ch);
  $res = mb_convert_encoding( $out_put, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5' );
  $res=str_replace('setMdskip',"",$res);
  $res=str_replace('(',"",$res);
  $res=str_replace(')',"",$res);
  $result=json_decode($res,true);
  $nowk="";
  $nowstore="";
  foreach($result['defaultModel']['inventoryDO']['skuQuantity'] as $k=>$val){
   $nowk=$k;
   $nowstore=$val;
   break;
  }

  $myres['title']=str_replace('-tmall.com天貓','',$title);

  $myres['price']=$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['price'];

  $myres['act_price']=isset($result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['suggestivePromotionList'])?$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk]['suggestivePromotionList']:$result['defaultModel']['itemPriceResultDO']['priceInfo'][$nowk];

  $myres['stock']=$result['defaultModel']['inventoryDO']['totalQuantity']?$result['defaultModel']['inventoryDO']['totalQuantity']:$nowstore['quantity'];
  //查詢(xún)出圖片信息
  preg_match('|ul id="J_UlThumb" class="tb-thumb tm-clear">(.*)/ul>|isU',$content, $match);
  preg_match_all('/img src="(.*?)" \//',$match[1],$images);
  $myres['banners']=$images[1];
 }
 return $myres;
}

上述代碼用到phpquery的庫(kù),但是其實(shí)沒(méi)啥用,直接用Curl就行,具體爬取的數(shù)據(jù)可以穿參查看結(jié)果,方法不區(qū)分淘寶和天貓鏈接,但是前提是必須是PC端鏈接,另外正則寫(xiě)的不規(guī)范,所以可以自己重寫(xiě)正則來(lái)匹配數(shù)據(jù)。

更多內(nèi)容請(qǐng)參考專(zhuān)題《python爬取功能匯總》進(jìn)行學(xué)習(xí)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • PHP 爬取網(wǎng)頁(yè)的主要方法
  • php記錄搜索引擎爬行記錄的實(shí)現(xiàn)代碼
  • php與python實(shí)現(xiàn)的線程池多線程爬蟲(chóng)功能示例
  • php實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)的開(kāi)發(fā)
  • php實(shí)現(xiàn)爬取和分析知乎用戶(hù)數(shù)據(jù)
  • PHP爬蟲(chóng)之百萬(wàn)級(jí)別知乎用戶(hù)數(shù)據(jù)爬取與分析
  • PHP實(shí)現(xiàn)簡(jiǎn)單爬蟲(chóng)的方法
  • 淺析php如何實(shí)現(xiàn)爬取數(shù)據(jù)原理

標(biāo)簽:興安盟 株洲 濱州 南京 白酒營(yíng)銷(xiāo) 南昌 太原 曲靖

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php爬取天貓和淘寶商品數(shù)據(jù)》,本文關(guān)鍵詞  php,爬取天,貓,和,淘寶,商品,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php爬取天貓和淘寶商品數(shù)據(jù)》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于php爬取天貓和淘寶商品數(shù)據(jù)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    安宁市| 建瓯市| 盐山县| 炉霍县| 比如县| 泾阳县| 广元市| 清远市| 岳池县| 福清市| 淮南市| 前郭尔| 蒙自县| 海兴县| 嘉鱼县| 外汇| 江西省| 共和县| 隆德县| 永城市| 东源县| 青河县| 时尚| 西宁市| 乌恰县| 大同市| 循化| 五莲县| 红河县| 渝北区| 松江区| 维西| 通道| 乐业县| 神农架林区| 河源市| 四平市| 舒城县| 龙山县| 马关县| 贞丰县|