แจก 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
แสดงความคิดเห็น