เปลี่ยนเว็บไซต์โบราณให้เป็น API
ในขณะที่บริษัทต่าง ๆ พยายามเพิ่มประสิทธิภาพกระบวนการและลดงานที่ไม่เพิ่มมูลค่า กระบวนการทำงานอัตโนมัติจึงได้รับความนิยมมากขึ้นเรื่อยๆ การทำงานอัตโนมัติไม่เพียงแต่ลดรอบเวลาเท่านั้น แต่ยังลดโอกาสเกิดข้อผิดพลาดให้เหลือน้อยที่สุด และสร้างสภาพแวดล้อมการทำงานที่ดียิ่งขึ้น
แม้จะได้รับประโยชน์จากการทำงานอัตโนมัติ แต่บริษัทต่างๆ มักจะเผชิญกับอุปสรรค์สำคัญเมื่อพยายามทำงานซ้ำๆ โดยอัตโนมัติ นั่นคือเว็บไซต์ที่ล้าสมัยซึ่งเป็นศูนย์กลางของกระบวนการทำงาน แม้ว่าเว็บไซต์เหล่านี้จำเป็นสำหรับการรวบรวมข้อมูลที่สำคัญและเริ่มต้นสตรีมกระบวนการ แต่ก็มักจะขาดความซับซ้อนของภูมิทัศน์ทางเทคโนโลยีที่มีอยู่ของบริษัท และเป็นการยากที่จะรวมเข้ากับกระบวนการอัตโนมัติ
โชคดีที่นักเขียนบทละครมีวิธีแก้ปัญหา ด้วยการใช้เทคโนโลยีที่ล้ำสมัยนี้ ธุรกิจต่างๆ สามารถเปลี่ยนเว็บไซต์เก่าๆ ให้เป็น RESTful API ที่เข้ากับโมเดลที่มีอยู่ได้อย่างลงตัว ทำไมต้องรอ? อย่าปล่อยให้เว็บไซต์ที่ล้าสมัยขัดขวางคุณจากการบรรลุเป้าหมายการทำงานอัตโนมัติของคุณ โอบกอดนักเขียนบทละครและยกระดับความพยายามอัตโนมัติของคุณไปอีกขั้น!
ในตัวอย่างจริง เราต้องการสำรวจวิธีการทำงานอัตโนมัตินี้ ในกรณีนี้ SME ของโปแลนด์พยายามประหยัดเวลาหลายชั่วโมงในการตรวจสอบผู้มีโอกาสเป็นลูกค้าและคู่ค้าโดยใช้เว็บไซต์หอการค้าโปแลนด์ ( PRS )
ก่อนอื่นเรามาดูหน้ากากค้นหา:
อย่างที่เราเห็นนี่เป็นรูปแบบง่ายๆที่มีช่องใส่ข้อมูลและปุ่มค้นหา
ในตัวอย่างนี้ เราใช้ Playwright เพื่อเปิดเบราว์เซอร์ Chromium นำทางไปยังหน้าเว็บ ทำเครื่องหมายที่ประเภทบันทึกทั้งสองที่เรากำลังมองหาโดยใช้ CSS-Selector:
const { chromium } = require('playwright');
async function getGOVPL(){
const browser = await chromium.launch();
const page = await browser.newPage();
// Navigate to the page
await page.goto('https://wyszukiwarka-krs.ms.gov.pl/');
// Click Checkboxes
await page
.locator("p-checkbox:has-text('Przedsiębiorcy') div:nth-child(2)")
.click();
await page
.locator(
"p-checkbox:has-text('Stowarzyszenia, inne organizacje społ. i zawodowe,
fundacje, ZOZ') div:nth-child(2)")
.click();
...
}
module.exports = getGOVPL;
//Selectors for input and button
await page
.locator('ds-input[label="Nazwa"] input:nth-child(1)')
.fill("Softwarehut");
await page
.locator("button:has-text('Wyszukaj'):visible")
.click();
const table = await page.$("div#p-panel-5 table");
const thead = await table.$("thead");
const ths = await thead.$$("th");
const headers = await Promise.all(
ths.map(async (th) => {
const header = await th.innerText();
return header.trim();
})
);
const ths = page.locator("div#p-panel-5 table thead th:visible");
const tbds = page.locator("div#p-panel-5 table tbody tr td:visible");
await page.waitForSelector("div#p-panel-5 table tbody tr td", {
state: "visible",
});
await page.waitForTimeout(1000);
const thsCount = await ths.count();
const result: any = {};
for (let i = 0; i < thsCount; i++) {
const key = await ths.nth(i).innerText();
const value = await tbds.nth(i).innerText();
result[key] = value;
}
return result;
await browser.close();
const express = require("express");
const app = express();
const getGOVPL = require("./example");
const { chromium } = require("playwright");
app.get("/govpl", async (req, res) => {
const result = await getGOVPL();
res.send(result);
});
app.listen(3000, () => {
console.log("Server started on port 3000");
});
curl "http://localhost:3000/govpl"
// example.js
const { chromium } = require("playwright");
async function getGOVPL(searchValue) {
if (!searchValue) {
return { error: "No search value provided" };
}
const browser = await chromium.launch();
const page = await browser.newPage();
// Navigate to the page containing the input element
await page.goto("https://wyszukiwarka-krs.ms.gov.pl/");
await page
.locator("p-checkbox:has-text('Przedsiębiorcy') div:nth-child(2)")
.click();
await page
.locator(
"p-checkbox:has-text('Stowarzyszenia, inne organizacje społ. i zawodowe, fundacje, ZOZ') div:nth-child(2)"
)
.click();
await page
.locator('ds-input[label="Nazwa"] input:nth-child(1)')
.fill(searchValue);
await page.locator("button:has-text('Wyszukaj'):visible").click();
const ths = page.locator("div#p-panel-5 table thead th:visible");
const tbds = page.locator("div#p-panel-5 table tbody tr td:visible");
await page.waitForSelector("div#p-panel-5 table tbody tr td", {
state: "visible",
});
await page.waitForTimeout(2000);
const thsCount = await ths.count();
const result = {};
for (let i = 0; i < thsCount; i++) {
const key = await ths.nth(i).innerText();
const value = await tbds.nth(i).innerText();
result[key] = value;
}
return result;
}
module.exports = getGOVPL;
// api.js
const express = require("express");
const app = express();
const getGOVPL = require("./example");
const { chromium } = require("playwright");
app.get("/govpl", async (req, res) => {
const inputValue = req.query.inputValue;
const result = await getGOVPL(inputValue);
res.send(result);
});
app.listen(3000, () => {
console.log("Server started on port 3000");
});
Browsie.io ทำให้การทำงานอัตโนมัติของเว็บแอปพลิเคชันง่ายขึ้นด้วยการจัดเตรียมส่วนต่อประสานที่ใช้งานง่ายและเวิร์กโฟลว์ที่มีประสิทธิภาพ ต้องใช้โค้ดน้อยลงและออกแบบมาเพื่อจัดการกับกรณีการใช้งานที่ซับซ้อนได้อย่างง่ายดาย Browsie.ioใช้พร็อกซีและเบราว์เซอร์ที่ใช้งานจริงในระบบคลาวด์ ทำให้การตั้งค่ามีประสิทธิภาพและปลอดภัยยิ่งขึ้น
ด้วย Browsie.io ธุรกิจสามารถประหยัดเวลาและทรัพยากรในขณะที่ปรับปรุงประสิทธิภาพของเวิร์กโฟลว์ API ใช้งานง่ายและสามารถช่วยให้เว็บแอปพลิเคชันที่ท้าทายที่สุดทำงานอัตโนมัติได้ ดังนั้น หากคุณกำลังมองหาวิธีที่น่าเชื่อถือและมีประสิทธิภาพในการทำให้เว็บไซต์คร่ำครึของคุณเป็นอัตโนมัติBrowsie.ioเป็นโซลูชั่นที่สมบูรณ์แบบสำหรับคุณ
อะไรคืออุปสรรค์ของระบบอัตโนมัติบนเว็บของคุณในปัจจุบัน แสดงความคิดเห็นกับเรา!





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)