-->

แจก imacro เก็บสินค้า Lazada

แจก imacro เก็บสินค้า Lazada
แจก imacro เก็บสินค้า Lazada

หลังจากที่ไม่ได้เขียนบทความมานาน วันนี้ผมเลยเอา imacro เก็บสินค้า Lazada มาแจกครับ ซึ่งวันนี้ เอา version open source มาแจกเลยครับ สามารถนำไปแก้ไขปรับปรุงได้ อีกทั้งยังสามารถปรับใช้กับเว็บอื่นๆได้อีกด้วยครับผม

code ที่ผมเขียนไว้ ค่อนข้างจะสังเกตง่ายอยู่แล้วครับ ถ้ามีพื้นฐานการเขียน imacro นิดหน่อยปรับปรุงได้ทันทีเลยครับ

ข้อมูลที่ได้เป็นไฟล์ csv ครับ ซึ่งถูกบันทึกไว้ที่ D:\keeper\Lazada (สร้างโฟล์เดอร์ไว้ก่อนนะครับ) และสามารถแก้ไขได้ที่ 9
folder = "D:\\Keeper\\Lazada";  //ไฟล์จะถูกเก็บที่ D:\keeper\Lazada

ในรูปแบบของ { ลำดับ, ลิงค์, รูป, ชื่อสินค้า, ราคาขาย, หมวดหมู่ } สามารถสลับได้เช่นกันครับ
//การเรียงลำดับจะส่งผลถึงคอลั่มของข้อมูล สามารถสลับได้
iimPlay("CODE: SET !EXTRACT NULL" + "\n"
 +"ADD !EXTRACT {{np}}" + "\n"
 +"ADD !EXTRACT {{link}}" + "\n"
 +"ADD !EXTRACT {{img}}" + "\n"
 +"ADD !EXTRACT {{alltitle}}" + "\n"
 +"ADD !EXTRACT {{price}}" + "\n"
 +"ADD !EXTRACT {{category}}" + "\n"
 +"SAVEAS TYPE=EXTRACT FOLDER={{folder}} FILE={{savefile}}" + "\n");

บรรทัด 274(ใน code หลัก) ตรง ADD สลับได้เลยครับ หากไม่เอาอันไหนให้ใส่ // ไว้ด้านหน้า ก็จะไม่มีข้อมูลตัวนั้นแล้วครับ

งั้นลองนำสคริบ JS ทั้งหมดของ imacro เก็บสินค้า Lazada ครับ ทั้งหมด 322 บรรทัด ไปลองรันดูครับ สามารถดาวโหลด imacro เก็บสินค้า Lazada ที่ด้านล่างเลยครับ หากใครไม่สามารถโหลดได้ ให้ copy code ที่ด้านล่างไปใช้งานได้ครับ บันทึกเป็นไฟล์ .js เลยครับ

แล้วไฟล์ที่โหลดมาไว้ที่ไหน ??
C:\Users\ปปป\Documents\iMacros\Macros
หรือว่า โฟลเดอร์ Macros ในจุดที่เราลง iMacros ไว้ครับผม เท่านี้ก็เปิด Firefox มารันได้เลย

Firefox รัน iMacros ไม่ได้ ??
ผมแนะนำให้ลด version Firefox ลงมาครับ ใช้ Version54 ก็ได้ครับ ผมใช้อยู่
https://sourceforge.net/projects/portableapps/files/Mozilla%20Firefox%2C%20Portable%20Ed./

มีโปรแกรมอื่นไหมที่สามารถรัน Imacro แบบเบากว่า Firefox ??
มีครับ เป็นโปรแกรม Pale Moon ที่เหมือน Firefox เลยครับผม แต่เบากว่าและใช้ทรัพยากรเครื่องคอมที่น้อยกว่า Firefox ครับ แต่ก็เหมือน Firefox ครับ เหมือนตรงที่ว่า ไม่สามารถใช้เวอร์ชั่นล่าสุดได้ครับ ใช้ version 26.4.0 ครับ สามารถใช้งานได้เลย ดาวโหลดโปรแกรมที่
ftp://archive.palemoon.org/
และติดตั้ง Imacro เหมือน Firefox เลยครับผม

Pale Moon จะสร้าง Profile เพิ่มอย่างไร ให้รันหลายหน้าต่าง ??
ผมทำเหมือน Firefox ครับ ทีแรกผมหาตัวโปรไฟล์ของ  Pale Moon ไม่เจอ ผมเลย สร้าง shortcut ไปหน้า Desktop แล้วคลกขวา Properties เพิ่ม  -no-remote -P หลังที่อยู่ไฟล์ตรงช่อง Target ครับ


หลังจากนั้นเปิดโปรแกรมขึ้นมา มันจะถามว่าเปิดโปรไฟล์ไหน เราก็สร้างเพิ่มก็ได้ครับ




เริ่ม Code Javascript Imacro เก็บสินค้า Lazada
//ImacroKeeper Lazada
//Version 180118

 //------User Setting--------------------------------------------------
 var web="Lazada.com"
 var modate="18-01-2018"
 var waitt="1"
 var waittpage="2"
 folder = "D:\\Keeper\\Lazada";  //ไฟล์จะถูกเก็บที่ D:\keeper\Lazada

 //------Default Setting--------------------------------------------------
 var i, next, np = 0, titlec="", link="", img="", price="";
 var savefile, folder, page, category, error = 0, linkgo, urlnextpage;
 var perpage = 40, p=0;
 
 //------Echo Code--------------------------------------------------
 var foot;
 foot =  "CODE: VERSION BUILD=8920312 " + "\n";
 foot += "SET !TIMEOUT_PAGE 1" + "\n";
 foot += "TAG POS=1 TYPE=A ATTR=CLASS:rfx_1wtPz" + "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 foot += "EVENTS TYPE=KEYPRESS SELECTOR=* KEYS=[34,34]" + "\n";
 //foot += "WAIT SECONDS="+waitt+ "\n";
 
 //------Echo Function--------------------------------------------------
 //***Link***
 function FindLink(str) {
  var rx = //ig;
  var arr = rx.exec(str);
  if( arr != null ){
   return arr[1];
  }else{
   return null;
  }
 }
 
 //***IMG***
 function FindImg(str) {
  var rx = /<*img .="" src="([\S\s]*?)" />/ig;
  var arr = rx.exec(str);
  if( arr != null ){
   return arr[1];
  }else{
   return null;
  }
 }
 
 //***Check URL HTTP***
 function Chkhttp(str)
 {
     var tarea = str;
     var tarea_regex = /^(http|https)/;
     if(tarea_regex.test(String(tarea).toLowerCase()) == true)
     {
         return str;
     }else{
         return "http:"+str;
     }
 }

 //------Start--------------------------------------------------
 iimDisplay(web+" Keeper ; Last update : "+modate);
 
 //Check Page
 iimPlay("CODE: VERSION BUILD=8920312 " + "\n"
  +"SET !ERRORIGNORE YES" + "\n"
  +"SET !ERRORCONTINUE YES" + "\n"
  +"SET !EXTRACT_TEST_POPUP NO" + "\n"
  +"SET !TIMEOUT_PAGE 360" + "\n"
  +"TAB T=1" + "\n"
  +"SET !DATASOURCE_LINE {{!LOOP}}" + "\n"
  +"SET !TIMEOUT_STEP 1"  + "\n"
  +"TAG POS=1 TYPE=DIV ATTR=CLASS:c1DXz4 EXTRACT=TXT" + "\n");
  extract = iimGetLastExtract();
 if(extract !== '#EANF#') {
  counts = extract.split(' ')[0];
  counts = counts.replace(/[^\d.-]/g, '');
  if(counts != ''){
   counts=counts;
   pages = counts/perpage;
   page=Math.ceil(pages);//count page
  }else{
   javascript:page=prompt("Please Enter number of Pages:", "");
  }
 }else{
   javascript:page=prompt("Please Enter number of Pages:", "");
 }
 
 //Check Current Page
 iimPlay("CODE: VERSION BUILD=8920312 " + "\n"
  +"TAG POS=1 TYPE=LI ATTR=CLASS:*ant-pagination-item-active EXTRACT=TXT" + "\n");
  extract = iimGetLastExtract();
 if(extract !== '#EANF#') {
  //current = extract.replace(',', '');
  //current = current.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1");
  current = extract.replace(/[^\d.-]/g, '');
  if(current != '1'){
   page=page-current+1;
   counts=counts-(perpage*current)+perpage;
  }
 }
 
 //Check FileName
 iimPlay("CODE: VERSION BUILD=8920312 " + "\n"
  +"SET !ERRORIGNORE YES" + "\n"
  +"SET !ERRORCONTINUE YES" + "\n"
  +"SET !EXTRACT_TEST_POPUP NO" + "\n"
  +"SET !TIMEOUT_PAGE 360" + "\n"
  +"TAB T=1" + "\n"
  +"SET !TIMEOUT_STEP 1"  + "\n"
  +"TAG POS=1 TYPE=SPAN ATTR=CLASS:breadcrumb_item_anchorbreadcrumb_item_anchor_last EXTRACT=TXT" + "\n");
  extract = iimGetLastExtract();
  
 if(extract !== '#EANF#') {
 
  savefile= extract.trim();
  if(savefile != ''){
   //savefile= savefile.replace(/[^\w\s-]/g, '').trim().toLowerCase();
   //savefile= savefile.replace(/[-\s]+/g, '-');
   savefile= savefile.replace(/[\\-\\+\\.\\^:,]/g,'');
   savefile = savefile + ".csv";
  }else{
   javascript:savefile=prompt("Please Enter NameFile:", "");
   savefile = savefile + ".csv";
  }
  
 }else{
   javascript:savefile=prompt("Please Enter NameFile:", "");
   savefile = savefile + ".csv";
 }
 
 if(savefile !== ''){
  category = savefile.replace('.csv','');
  }else{
  category = 'category';
 }
 
 //เริ่ม Loop เก็บสินค้า
 for (var a=1;a<=page;a++){
 
  var t=2;
  var m=1;
 
  iimPlay(foot);
  
  error = 0;
  
  iimPlay("CODE:WAIT SECONDS="+waittpage+ "\n");
  
  if (a==page) {
   var dd = perpage - ((page*perpage)-counts);
   perpage = dd;
  }
 
  for (var i=1;i<=perpage;i++)
  {
   error = 0;
   
   p++;
   
   iimDisplay(web+"--Last update : "+modate+" \n\nPage "+a+"/"+page+" Item "+i+" /"+perpage+" Archived "+np+" /"+counts+"\n\nFileName "+savefile);
   
   //เก็บข้อมูล Title
   if(error == 0) {
   
    //Title
    iimPlay("CODE: SET !EXTRACT NULL" + "\n"
     +"SET !TIMEOUT_STEP 2" + "\n"
     //+"TAG POS="+i+" TYPE=DIV ATTR=CLASS:prod_nameBlock EXTRACT=TXT" + "\n");
     +"TAG POS="+i+" TYPE=DIV ATTR=CLASS:c16H9d EXTRACT=TXT" + "\n");
    extract = iimGetLastExtract();
    if(extract !== '#EANF#') {
     alltitle = extract.trim();
     alltitle = alltitle.replace('\n', ' ').replace('\r', ' ');
     alltitle = alltitle.replace('\n', ' ').replace('\r', ' ');
    }else{
     error++;
    }
    
   }
 
   //เก็บข้อมูล Link
   if(error == 0) {
 
    //Link
    iimPlay("CODE: SET !EXTRACT NULL" + "\n"
     +"SET !TIMEOUT_STEP 2" + "\n"
     //+"TAG POS="+i+" TYPE=A ATTR=HREF:*/product/*&&data-altimg:*&&rel:* EXTRACT=HREF" + "\n");
     +"TAG POS="+i+" TYPE=DIV ATTR=CLASS:cRjKsc EXTRACT=HTM" + "\n");
    extract = iimGetLastExtract();
    if(extract !== '#EANF#') {
     link = extract.trim();
     link = FindLink(link);
     link = Chkhttp(link);
    }else{
     error++;
    }
    
   }
 
   //เก็บข้อมูลรูปภาพ
   if(error == 0) {
   
    //Images
    iimPlay("CODE: SET !EXTRACT NULL" + "\n"
     +"SET !TIMEOUT_STEP 2" + "\n"
     //+"TAG POS="+i+" TYPE=IMG ATTR=CLASS:npr-1vORiloaded EXTRACT=HREF" + "\n");
     +"TAG POS="+i+" TYPE=DIV ATTR=CLASS:cRjKsc EXTRACT=HTM" + "\n");
    extract = iimGetLastExtract();
    if(extract !== '#EANF#') {
     img = extract.trim();
     img = FindImg(img);
     img = Chkhttp(img);
    }else{
     //break;
     error++;
    }
    
   }
   
   //เก็บข้อมูลราคา
   if(error == 0) {
   
    //Price
    iimPlay("CODE: SET !EXTRACT NULL" + "\n"
     +"SET !TIMEOUT_STEP 2" + "\n"
     //+"TAG POS="+i+" TYPE=IMG ATTR=CLASS:npr-1vORiloaded EXTRACT=HREF" + "\n");
     +"TAG POS="+i+" TYPE=SPAN ATTR=CLASS:c13VH6 EXTRACT=TXT" + "\n");
    extract = iimGetLastExtract();
    if(extract !== '#EANF#') {
     price = extract.trim();
     price = price.replace('฿', '');
    }else{
     //break;
     error++;
    }
    
   }
   
   iimSet("np",np);
   iimSet("alltitle",alltitle);
   iimSet("link",link);
   iimSet("img",img);
   iimSet("price",price);
   iimSet("category",category);
  
   iimSet("savefile",savefile);
   iimSet("folder",folder);
   
   //บันทึกข้อมูลลงไฟล์ CSV
   if(error == 0) {
    
    //การเรียงลำดับจะส่งผลถึงคอลั่มของข้อมูล สามารถสลับได้
    iimPlay("CODE: SET !EXTRACT NULL" + "\n"
     +"ADD !EXTRACT {{np}}" + "\n"
     +"ADD !EXTRACT {{link}}" + "\n"
     +"ADD !EXTRACT {{img}}" + "\n"
     +"ADD !EXTRACT {{alltitle}}" + "\n"
     +"ADD !EXTRACT {{price}}" + "\n"
     +"ADD !EXTRACT {{category}}" + "\n"
     +"SAVEAS TYPE=EXTRACT FOLDER={{folder}} FILE={{savefile}}" + "\n");
     
    np++;
    
   }
   
   t = t+2;
   m = m+4;
   
  }//End For
  
  if(a != page){
   iimDisplay("Next Page Wait "+waittpage+" Second");
   //iimPlay(next);
   //iimPlay("CODE: SET !EXTRACT NULL" + "\n"
    //+"TAG POS=1 TYPE=LI ATTR=CLASS:ant-pagination-item*TXT:"+a+"\n");
   iimPlay("CODE: SET !EXTRACT NULL" + "\n"
    +"ADD !EXTRACT {{!URLCURRENT}}" + "\n");
    extract = iimGetLastExtract();
    if(extract !== '#EANF#') {
     var xy = 1;
     urlnextpage = a+xy;
     linkgo = extract.trim();
     linkgo = linkgo.split('&spm')[0];
     linkgo = linkgo.split('=')[0];
     linkgo = linkgo.replace('?page', '');
     linkgo = linkgo.replace('?spm', '');
     //iimPlay("URL GOTO="+linkgo+"="+a+"");
     //iimDisplay("Next Page : "+linkgo+" ");
     iimPlay("CODE: SET !EXTRACT NULL" + "\n"
      +"URL GOTO="+linkgo+"?page="+urlnextpage+"\n"
      + "WAIT SECONDS="+waittpage+ "\n");
    }else{
     error++;
    }
  }
  
  if(a == page){
   iimDisplay(web+" Keeper     <> "+web+"--Last update : "+modate+" \n\nKeep Success "+a+"/"+page+"\n\nProduct Archived "+np+" /"+counts+"\nFileName "+savefile);
  }
  
  
 }


สคริบนี้แจกเพื่อการศึกษา ห้ามนำไปใช้เชิงธุรกิจ ขอขอบคุณทุกท่านครับ
เวอร์ชั่นนี้ ปรับปรุงเมื่อ 15-01-2018