getContext()->getRequest(); //获取产品类别 $sql = "select cid,pname from lkt_product_class where sid = 0 "; $r = $db->select($sql); $res = ''; foreach ($r as $key => $value) { $c = '-'.$value->cid.'-'; $res .= ''; //循环第一层 $sql_e = "select cid,pname from lkt_product_class where sid = $value->cid"; $r_e = $db->select($sql_e); if($r_e){ $hx = '-----'; foreach ($r_e as $ke => $ve){ $cone = $c . $ve->cid.'-'; $res .= ''; //循环第二层 $sql_t = "select cid,pname from lkt_product_class where sid = $ve->cid"; $r_t = $db->select($sql_t); if($r_t){ $hxe = $hx.'-----'; foreach ($r_t as $k => $v){ $ctow = $cone . $v->cid.'-'; $res .= ''; } } } } } $request->setAttribute("ctype",$res); return View :: INPUT; } public function execute() { $db = DBAction::getInstance(); $request = $this->getContext()->getRequest(); $url = $request->getParameter('url'); $product_class = $request->getParameter('product_class'); preg_match('|\.(.*).com|isU',$url, $type); $type = $type[1]; if ($type == "1688") { $ret = $this->getalbb($url,$product_class); }else if($type == 'taobao'){ $ret = $this->get_item_taobao($url,$product_class); }else{ header("Content-type:text/html;charset=utf-8"); echo ""; } } public function getRequestMethods(){ return Request :: POST; } function get_item_taobao($url,$product_class){//淘宝数据抓取 if(!empty($product_class)){ $dte['product_class']=$product_class; }else{ $dte['product_class']='-1-'; } $db = DBAction::getInstance(); $text=file_get_contents($url);//将url地址上页面内容保存进$text preg_match_all('|

', $title1); $dte['product_title']=$title2[0];//产品标题 $sql = "select * from lkt_product_list where product_title = '$title2[1]'";//查询是否有相同名称的商品 $r001 = $db->select($sql); if(!empty($r001)){ echo "数据库里有该商品"; return ; header("Content-type:text/html;charset=utf-8"); echo ""; } preg_match('/]*id="J_ImgBooth"[^r]*rc=\"([^"]*)\"[^>]*>/', $text, $pic); //产品主图片 if(!empty($pic[1])){ $img = $this->getImage('http:'.$pic[1]);//储存图片 $dte['imgurl'] = $img['file_name']; } $chicun = $this->chicun($text);//淘宝商品对应的商品尺寸 $color = $this->color($text);//淘宝商品对应的商品规格颜色包括图片 if(!empty($chicun['chicun'])){//判断尺寸数组是否存在 $type1 = $chicun['type'] ; foreach ($chicun['chicun'] as $key01 => $value01) { if(!empty($value01)){//判断数组里单个值是否存在 if(!empty($color)){//判断颜色和图片是否存在 foreach ($color as $key02 => $value02) { if(!empty($value02)){//判断单个值是否存在 $chicunid =$value01['chicunid']; $idd=explode(':', $chicunid); if($type1 == 1 ){ $keyy = $idd[0]; }else{ $keyy = ''; } $chicun =$value01['chicun']; $colorid = $value02['colorid'] ; $img = $value02['img']; $colorname = $value02['colorname']; if($type1 == 1 ){//尺寸 $ids = $idd[1].';'.$colorid; }elseif ($type1 == 2) {//高度 $ids = $colorid.';'.$chicunid; }else{ $ids = $idd[1].';'.$colorid; } $price = $this->price($text,$keyy);//淘宝商品对应的商品规格价格及ID foreach ($price as $key03 => $value03) { $id = $value03['id']; if ($ids == $id) { $pricee[$key03]['id'] = $id; $pricee[$key03]['price'] = $value03['price']; $pricee[$key03]['chicun'] = iconv('GBK','UTF-8', $chicun); $pricee[$key03]['img'] = $img; $pricee[$key03]['colorname'] = $colorname; $pricee[$key03]['color'] = $colorname; } } }else{ unset($color[$key02]); } } } }else{ unset($chicun[$key01]);//单个值不存在就清除掉 } } }else{//没有尺寸 if(!empty($color)){//判断颜色和图片是否存在 foreach ($color as $key02 => $value02) { if(!empty($value02)){//判断单个值是否存在 $keyy = ''; $colorid = $value02['colorid'] ; $img = $value02['img']; $colorname = $value02['colorname']; $ids =$colorid; $price = $this->price($text,$keyy);//淘宝商品对应的商品规格价格及ID foreach ($price as $key03 => $value03) { $id = $value03['id']; if ($ids == $id) { $pricee[$key03]['id'] = $id; $pricee[$key03]['price'] = $value03['price']; $pricee[$key03]['chicun'] = '默认'; $pricee[$key03]['img'] = $img; $pricee[$key03]['colorname'] = $colorname; $pricee[$key03]['color'] = $colorname; } } }else{ unset($color[$key02]); } } }else{//没有尺寸,没有颜色 $keyy = ''; $price = $this->price($text,$keyy);//淘宝商品对应的商品规格价格及ID $pricee[0]['price'] = $price['price']; $pricee[0]['chicun'] = '默认'; $pricee[0]['img'] = ''; $pricee[0]['colorname'] = '默认'; $pricee[0]['color'] = '默认'; } } $dte['arr'] =$pricee; $dte['content']="商品介绍"; return $this -> save_goods($dte); } function price($text,$keyy){//获取淘宝商品对应价格及ID preg_match_all('|valItemInfo : {(.*),propertyMemoMap: {|isU',$text,$price); if(!empty($price[1][0])){ preg_match_all('|skuMap : (.*)}}|isU',$price[1][0],$price001); if (!empty($keyy)) { $kee = '";'.$keyy; $dd= explode($kee , $price001[1][0]);//价格 foreach ($dd as $key01 => $value01) { if(!empty($value01) && $value01 !='{'){ $dd1 = 'id'.$value01; preg_match_all('|id:(.*);":|isU',$dd1,$idss); preg_match_all('|{(.*),"oversold":false|isU',$dd1,$idss1); $arr = json_decode('{'.$idss1[1][0].'}'); $pricee[$key01]['id'] = $idss[1][0]; $pricee[$key01]['price'] = $arr->price; }else{ unset($dd['key01']); } } }else{ $kee = '";'; $dd= explode($kee , $price001[1][0]);//价格 foreach ($dd as $key01 => $value01) { if(!empty($value01) && $value01 !='{'){ $dd1 = 'id'.$value01; preg_match_all('|id(.*);":|isU',$dd1,$idss); preg_match_all('|{(.*),"oversold":false|isU',$dd1,$idss1); $arr = json_decode('{'.$idss1[1][0].'}'); $pricee[$key01]['id'] = $idss[1][0]; $pricee[$key01]['price'] = $arr->price; }else{ unset($dd['key01']); } } } }else{ preg_match_all('||isU',$text,$price); $pricee['price'] = $price[1][0]; } return $pricee; } function chicun($text){//获取淘宝商品对应的尺码 preg_match_all('|
(.*)
|isU',$text, $ccc);//商品尺寸 preg_match_all('|
(.*)
|isU',$text, $ccc1);//商品高度 if(!empty($ccc[0][0])){ $cc = $ccc[0][0]; $arr['type'] = 1; }elseif(!empty($ccc1[0][0])){ $cc = $ccc1[0][0]; $arr['type'] = 2; }else{ $cc = ''; $arr['type'] = 3; } if(!empty($cc)){ preg_match_all('|
  • |isU',$cc, $cc1); if(!empty($cc1)){ foreach ($cc1[0] as $key => $value) { $dd = preg_replace('/\"(.*?)\"/s', "\${1}",$value); preg_match_all('|(.*)|isU',$dd, $cc2); $arr['chicun'][$key]['chicunid'] = $cc2[1][0];//尺寸对应的ID preg_match_all('|(.*)|isU',$value, $chicun); $arr['chicun'][$key]['chicun'] = $chicun[1][0]; } } }else{ $arr = ''; } return $arr; } function color($text){//淘宝商品对应的商品规格颜色包括图片 preg_match_all('|
    (.*)
    |isU',$text, $color); if(!empty($color[1][0])){ preg_match_all('|
  • |isU',$color[1][0], $color1); if(!empty($color1)){ foreach ($color1[1] as $key => $value) { $dd = preg_replace('/\"(.*?)\"/s', "\${1}",$value); preg_match_all('|(.*)|isU',$dd, $color2id); $arr[$key]['colorid'] = $color2id[1][0];//尺寸对应的ID $urlimg = $color2id[1][2];//尺寸对应的图片地址 if(!empty($urlimg)){ preg_match_all("/(?:\()(.*)(?:\))/i",$urlimg,$img); if(!empty($img[1][0])){ $img = $this->getImage('https:'.$img[1][0]);//储存图片 $arr[$key]['img'] = $img['file_name']; unset($img['file_name']); }else{ $arr[$key]['img'] =''; } }else{ $arr[$key]['img'] =''; } preg_match_all('|(.*)|isU',$value, $colorname); $colorname1 = iconv('GBK','UTF-8', $colorname[1][0]); $arr[$key]['colorname'] = $colorname1; } } }else{ $arr = ''; } return $arr; } function getcurl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); $content = curl_exec($ch); curl_close($ch); return $content; } function getalbb($url,$product_class){//1688抓取 if(!empty($product_class)){ $dte['product_class']=$product_class; }else{ $dte['product_class']='-1-'; } $db = DBAction::getInstance(); $text=file_get_contents($url);//将url地址上页面内容保存进$text preg_match('/<(h1)[^c]*class=\"d-title\"[^>]*>.*<\/\\1>/is', $text, $title); $product_title = preg_replace('/"/', '',$title[0]); preg_match('|(.*)|isU',$product_title,$product_title1); $dte['product_title']=$product_title1[1];//产品标题 $sql = "select * from lkt_product_list where product_title = '$product_title'";//查询是否有相同名称的商品 $r001 = $db->select($sql); if(!empty($r001)){ return ; } preg_match('/]*class="swipe-pane"[^r]*rc=\"([^"]*)\"[^>]*>/', $text, $pic);//产品主图片 if(!empty($pic[1])){ $img = $this->getImage($pic[1]);//储存图片 $dte['imgurl'] = $img['file_name']; } preg_match('|
    save_goods($dte); } function guige($text,$dte){//查询1688商品规格 preg_match_all('|{};window.wingxViewData(.*)}|isU', $text, $dd);//查询规格,图片 $ddd = end($dd[1]); preg_match_all('|"skuProps":(.*)],|isU', $ddd, $ree);// preg_match_all('|"value":(.*)]}|isU', $ree[1][0], $ree1);// preg_match_all('|{(.*)}|isU', $ree1[1][0], $tupian);//颜色+图片 if(!empty($ree1[1][1])){ preg_match_all('|{(.*)}|isU', $ree1[1][1], $chicun);//尺寸 if(!empty($tupian[0])){ foreach ($tupian[0] as $key => $value) { $tupian1[] = json_decode($value); } } if(!empty($chicun[0])){ foreach ($chicun[0] as $key => $value01) { $chicun1[] = json_decode($value01); } } foreach ($tupian1 as $key02 => $value02) { // print_r($value02);die; if(!empty($value02->imageUrl)){ $u= $this->getImage($value02->imageUrl);//储存图片 $tupian1[$key02]->img = $u['file_name']; }else{ $tupian1[$key02]->img = ''; } foreach ($chicun1 as $key03 => $value03) { $arr1['colorname'] = $title1 = $value02->name; $arr1['color'] = $title1 = $value02->name; $arr1['img'] = $value02->img; $arr1['price'] = $dte['price']; $arr1['chicun'] = $value03->name; $arr[]= $arr1; } } }else{ if(!empty($tupian[0])){ foreach ($tupian[0] as $key => $value) { $tupian1[] = json_decode($value); } } foreach ($tupian1 as $key02 => $value02) { if(!empty($value02->imageUrl)){ $u= $this->getImage($value02->imageUrl);//储存图片 $tupian1[$key02]->img = $u['file_name']; }else{ $tupian1[$key02]->img = ''; } $arr1['colorname'] = $title1 = iconv('GBK','UTF-8', $value02->name); $arr1['img'] = $value02->img; $arr1['price'] = $dte['price']; $arr1['chicun'] = '默认'; $arr1['color'] = '默认'; $arr[]= $arr1; } } return $arr; } /* } *功能:php完美实现下载远程图片保存到本地 *参数:文件url,保存文件目录,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function httpsRequest($url, $data=null) { // 1.初始化会话 $ch = curl_init(); // 2.设置参数: url + header + 选项 // 设置请求的url curl_setopt($ch, CURLOPT_URL, $url); // 保证返回成功的结果是服务器的结果 curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if(!empty($data)) { // 发送post请求 curl_setopt($ch, CURLOPT_POST, 1); // 设置发送post请求参数数据 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } // 3.执行会话; $result是微信服务器返回的JSON字符串 $result = curl_exec($ch); // 4.关闭会话 curl_close($ch); return $result; } //传入图片url 保存到本地 function getImage($url,$save_dir='./images/',$filename='',$type=0){ $type = substr($url,strripos($url,".")+1); if(!$type){ $type = '.jpg'; } if($filename == ''){ $filename = mt_rand(1,1111222).time().'.'.$type; } $newFilePath = $save_dir.$filename; $da = $this->httpsRequest($url); //发送post带参数请求 $newFile = fopen($newFilePath,"w"); //打开文件准备写入 fwrite($newFile,$da); //写入二进制流到文件 fclose($newFile); //关闭文件 return array('file_name'=>$filename,'save_path'=>$newFilePath,'error'=>0); } /* *功能:保存商品相关信息 *参数:product_title:产品主标题 imgurl:产品主图 price:价格 title:规格名称 thumb:规格对应的图片路径 */ function save_goods($dte){ $db = DBAction::getInstance(); $product_class = $dte['product_class'];//产品类别 $product_title =$dte['product_title']; $imgurl =$dte['imgurl']; $content =$dte['content']; $sql = "insert into lkt_product_list(product_class,product_title,imgurl,content,num,add_date,brand_id,s_type,status,sort) values('$product_class','$product_title','$imgurl','$content','0',CURRENT_TIMESTAMP,'0','1','0','100')"; $id = $db->insert($sql,'last_insert_id'); if($id>0){ foreach ($dte['arr'] as $key => $value) {//遍历插入商品规格 $name = $value['colorname']; $color = $value['color']; $img = $value['img']; $price = $value['price']; $size = $value['chicun']; $sql01 = "insert into lkt_configure( name,color,size,price,yprice,img,pid,num,bargain_price,status) VALUES ('$name','$color','$size','$price','0','$img','$id','0','0','0')"; $re = $db ->insert($sql01); } if($re>0){ header("Content-type:text/html;charset=utf-8"); echo ""; return '成功了'.$id; }else{ header("Content-type:text/html;charset=utf-8"); echo ""; return '失败了1'.$id; } }else{ header("Content-type:text/html;charset=utf-8"); echo ""; return '失败了2'.$id; } } } ?>