แจก imacro เก็บสินค้าและรายละเอียดของเว็บ Lazada
สคริบ Imacro สำหรับการเก็บสินค้าของเว็บ Lazada เป็นโปรแกรมที่ใช้ร่วมงานระหว่างโปรแกรม Firefox และ Extension อย่าง Imacro ตัวสคริบนี้ผมเขียนให้เก็บสินค้าอย่างอัตโนมิติ โดยจะเก็บข้อมูลในรูปแบบ csv ที่สามารถเปิดใน Excel ได้ง่าย
โดยการเปิดหน้าหมวดหมู่สินค้าของเว็บ Lazada ไว้ แล้วรันสคริบ imacro ได้เลย หลังจากนั้น ไฟล์และข้อมูลจะถูกเก็บไว้ตามที่เราระบุในการตั้งค่าครับ
โดยสามารถตั้งค่าเบื้องต้น เช่น
- folder ที่ใช้จัดเก็บไฟล์ csv ที่ได้จาก Lazada
- fileName(ชื่อไฟล์ csv) เป็นการระบุชื่อไฟล์ว่าเราจะตั้งไว้อย่างไร ตัวนี้ไม่ได้อัตโนมัติครับ
- perPage ที่ใช้ตั้งค่ารายการสินค้าต่อหน้าของเว็บ Lazada ครับ ผมตั้งเบื้องเต้นไว้ 40 ชิ้นต่อหน้า
//------User Setting--------------------------------------------------
var folder = "D:\\Keeper\\Lazada"; //ไฟล์จะถูกเก็บที่ D:\keeper\Lazada สร้างโฟลเดอร์ไว้ด้วยนะครับ
var fileName = "lazada";
var perPage = '40';
var waitPage = "1" //second
//------Text Display Status-----
var web = "Lazada"
var modifiedDate = "29-05-2021"
Download imacro เก็บสินค้าและรายละเอียดของเว็บ Lazada
Full Script Imacro Js Lazada
//------User Setting--------------------------------------------------
var folder = "D:\\Keeper\\Lazada"; //ไฟล์จะถูกเก็บที่ D:\keeper\Lazada สร้างโฟลเดอร์ไว้ด้วยนะครับ
var fileName = "lazada";
var perPage = '40';
var waitPage = "1" //second
//------Text Display Status-----
var web = "Lazada"
var modifiedDate = "29-05-2021"
//***Check URL HTTP***
function http(str) {
var tarea = str;
var tarea_regex = /^(http|https)/;
if (tarea_regex.test(String(tarea).toLowerCase()) == true) {
return str;
} else {
return "http:" + str;
}
}
//Check data
function checkdata(str) {
//if (str !== "__undefined__" || str !== "#EANF#") {
if (![undefined, "undefined", "null", "#EANF#", '#nodata#', "", " ", null].includes(str)) {
str = str.replace("SKUSKU", "SKU : ");
str = str.replace("แบรนด์แบรนด์", "แบรนด์ : ");
str = str.replace("เทรนด์แฟชั่นผู้หญิงเทรนด์แฟชั่นผู้หญิง", "เทรนด์แฟชั่นผู้หญิง : ");
str = str.replace("ประเภทของคอเสื้อประเภทของคอเสื้อ", "ประเภทของคอเสื้อ : ");
str = str.replace("จัดส่งแบบประหยัดจัดส่งแบบประหยัด", "จัดส่งแบบประหยัด : ");
str = str.replace("แบบธรรมดา : 4 - 12 วันแบบธรรมดา : 4 - 12 วัน", "แบบธรรมดา : 4 - 12 วัน : ");
return str.trim();
} else {
return '';
}
}
function htmlToText(str) {
if (!str || str == null || str == "") {
return "";
}
var rxb = /(<([^>]+)>)/ig;
var allText = str;
while ((text = rxb.exec(str)) !== null) {
allText = allText.replace(text[1], "");
}
return allText;
}
//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=SPAN ATTR=TXT:*ค้นพบสินค้า* EXTRACT=TXT" + "\n");
extract = iimGetLastExtract();
if (extract !== '#EANF#') {
counts = extract.replace(',', '');
counts = counts.replace(/.*?(([0-9]*\.)?[0-9]+).*/g, "$1");
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:", "");
}
iimPlay("CODE:VERSION BUILD=6500420" + "\n" +
"TAG POS=1 TYPE=LI ATTR=CLASS:*ant-pagination-item-active" + "\n" +
"WAIT SECONDS=" + waitPage + "\n");
var totalKeep = 0;
for (var a = 1; a <= page; a++) {
//URL on Cat Page
iimPlay("CODE: SET !EXTRACT NULL" + "\n" +
"SET !TIMEOUT_STEP 2" + "\n" +
"TAB T=1" + "\n" +
"TAG POS=1 TYPE=DIV ATTR=data-qa-locator:general-products EXTRACT=HTM" + "\n");
htmlCat = iimGetLastExtract();
var findUrlA = /href="([^"]*)" title="[^>]*"/ig;
var i = 1;
while ((urlProduct = findUrlA.exec(htmlCat)) !== null) {
iimDisplay(web + " Last update : " + modifiedDate + " \nPage " + a + "/" + page + " Item " + i + " /" + perPage + " Total " + totalKeep + " /" + counts);
var urlProductG = http(urlProduct[1]);
//goto page product
iimSet("urlProduct", urlProductG);
iimPlay("CODE: SET !EXTRACT NULL" + "\n" +
"SET !ERRORIGNORE YES" + "\n" +
"SET !ERRORCONTINUE YES" + "\n" +
"SET !EXTRACT_TEST_POPUP NO" + "\n" +
"SET !DATASOURCE_LINE {{!LOOP}}" + "\n" +
"SET !TIMEOUT_STEP 1" + "\n" +
"TAB OPEN" + "\n" +
"TAB T=2" + "\n" +
"url goto={{urlProduct}}" + "\n" +
"TAG POS=1 TYPE=H1 ATTR=CLASS:pdp-mod-product-badge-title EXTRACT=TXT" + "\n" + //1
"TAG POS=1 TYPE=A ATTR=CLASS:pdp-link<SP>pdp-link_size_s<SP>pdp-link_theme_blue<SP>pdp-review-summary__link EXTRACT=TXT" + "\n" + //2
"TAG POS=1 TYPE=SPAN ATTR=CLASS:pdp-price<SP>pdp-price_type_normal* EXTRACT=TXT" + "\n" + //3
"TAG POS=1 TYPE=IMG ATTR=CLASS:pdp-mod-common-image<SP>gallery-preview-panel__image EXTRACT=HREF" + "\n" + //4
"TAG POS=1 TYPE=A ATTR=CLASS:pdp-link<SP>pdp-link_size_l<SP>pdp-link_theme_black<SP>seller-name__detail* EXTRACT=TXT" + "\n" + //5
"TAG POS=1 TYPE=LI ATTR=CLASS:key-li&&TXT:Brand* EXTRACT=TXT" + "\n" + //6
"TAG POS=1 TYPE=LI ATTR=CLASS:key-li&&TXT:SKU* EXTRACT=TXT" + "\n" + //7
"TAG POS=1 TYPE=DIV ATTR=CLASS:html-content<SP>pdp-product-highlights EXTRACT=HTM" + "\n" + //8
"TAG POS=1 TYPE=DIV ATTR=CLASS:detail_decorate_root EXTRACT=HTM" + "\n"); //9
title = checkdata(iimGetLastExtract(1));
userRating = checkdata(iimGetLastExtract(2));
productPrice = checkdata(iimGetLastExtract(3));
productImage = checkdata(iimGetLastExtract(4));
productSeller = checkdata(iimGetLastExtract(5));
productBrand = checkdata(iimGetLastExtract(6));
productSKU = checkdata(iimGetLastExtract(7));
productHighlights = htmlToText(iimGetLastExtract(8));
productDescription = htmlToText(iimGetLastExtract(9));
iimSet("urlProductG", urlProductG);
iimSet("title", title);
iimSet("userRating", userRating);
iimSet("productPrice", productPrice);
iimSet("productImage", productImage);
iimSet("productSeller", productSeller);
iimSet("productBrand", productBrand);
iimSet("productSKU", productSKU);
iimSet("productHighlights", productHighlights);
iimSet("productDescription", productDescription);
iimSet("folder", folder);
iimSet("fileName", fileName);
//Save File
iimPlay("CODE: SET !EXTRACT NULL" + "\n" +
"ADD !EXTRACT {{urlProductG}}" + "\n" +
"ADD !EXTRACT {{title}}" + "\n" +
"ADD !EXTRACT {{userRating}}" + "\n" +
"ADD !EXTRACT {{productPrice}}" + "\n" +
"ADD !EXTRACT {{productImage}}" + "\n" +
"ADD !EXTRACT {{productSeller}}" + "\n" +
"ADD !EXTRACT {{productBrand}}" + "\n" +
"ADD !EXTRACT {{productSKU}}" + "\n" +
"ADD !EXTRACT {{productHighlights}}" + "\n" +
"ADD !EXTRACT {{productDescription}}" + "\n" +
"SAVEAS TYPE=EXTRACT FOLDER={{folder}} FILE={{fileName}}.csv" + "\n");
iimPlay("CODE: SET !EXTRACT NULL" + "\n" + "TAB CLOSE" + "\n");
i++;
totalKeep++;
}
if (a != page) {
iimDisplay("Next Page Wait " + waitPage + " Second");
iimPlay("CODE: SET !EXTRACT NULL" + "\n" +
"SET !TIMEOUT_STEP 1" + "\n" +
"TAG POS=1 TYPE=UL ATTR=CLASS:ant-pagination EXTRACT=HTM" + "\n");
ulNav = iimGetLastExtract();
var findNextpage = /title="Next Page".*aria-disabled="false"/ig;
urlProduct = findUrlA.exec(htmlCat);
if (urlProduct[1] !== null) {
iimPlay("CODE:VERSION BUILD=6500420" + "\n" +
"TAG POS=1 TYPE=LI ATTR=CLASS:ant-pagination-next" + "\n" +
"WAIT SECONDS=" + waitPage + "\n");
} else {
break;
}
}
if (a == page) {
iimDisplay(web + " Last update : " + modifiedDate + " \nPage " + a + "/" + page + " Item " + i + " /" + perPage + " Total " + totalKeep + " /" + counts);
}
}
แสดงความคิดเห็น