Convertir sitios web arcaicos en API

Mar 17 2023
A medida que las empresas se esfuerzan por optimizar sus procesos y reducir el trabajo sin valor agregado, la automatización de procesos se ha vuelto cada vez más popular. La automatización no solo reduce los tiempos de ciclo, sino que también minimiza la posibilidad de errores y crea un entorno de trabajo más positivo.

A medida que las empresas se esfuerzan por optimizar sus procesos y reducir el trabajo sin valor agregado, la automatización de procesos se ha vuelto cada vez más popular. La automatización no solo reduce los tiempos de ciclo, sino que también minimiza la posibilidad de errores y crea un entorno de trabajo más positivo.

A pesar de los beneficios de la automatización, las empresas a menudo enfrentan un gran obstáculo cuando intentan automatizar tareas repetitivas: sitios web obsoletos que son fundamentales para sus procesos. Si bien estos sitios web son esenciales para recopilar información crítica e iniciar flujos de procesos, a menudo carecen de la sofisticación del panorama tecnológico existente de una empresa y son difíciles, si no imposibles, de integrar en el proceso de automatización.

Afortunadamente, Playwright proporciona una solución. Al utilizar esta tecnología de vanguardia, las empresas pueden transformar sitios web arcaicos en API RESTful que se adaptan perfectamente a su modelo existente. Entonces, ¿por qué esperar? No permita que los sitios web obsoletos le impidan alcanzar sus objetivos de automatización. ¡Adopte Playwright y lleve sus esfuerzos de automatización al siguiente nivel!

En un ejemplo real, queremos explorar esta forma de automatización. En este caso, una PYME polaca intentó ahorrar horas y horas de investigación de posibles clientes y socios utilizando el sitio web de la cámara de comercio polaca ( PRS ).

Primero echamos un vistazo a la máscara de búsqueda:

Como podemos ver, este es un formulario simple con algunos campos de entrada y un botón de búsqueda.

En este ejemplo, estamos usando Playwright para iniciar un navegador Chromium, navegar a una página web, marcar los dos tipos de registro que estamos buscando usando el Selector de CSS:

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 simplifica la automatización de aplicaciones web al proporcionar una interfaz fácil de usar y un flujo de trabajo eficiente. Requiere menos líneas de código y está diseñado para manejar casos de uso complejos con facilidad. Browsie.io utiliza proxies y un navegador real lanzado en la nube, lo que hace que la configuración sea más robusta y segura.

Con Browsie.io, las empresas pueden ahorrar tiempo y recursos mientras mejoran la eficiencia de sus flujos de trabajo. La API es fácil de usar y puede ayudar a automatizar incluso las aplicaciones web más desafiantes. Entonces, si está buscando una forma confiable y eficiente de automatizar sus sitios web arcaicos, Browsie.io es la solución perfecta para usted.

¿Cuáles son sus obstáculos actuales de automatización web? ¡Danos un comentario!