Skip to content

Instantly share code, notes, and snippets.

@Silventino
Last active February 1, 2022 23:54
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Silventino/c70daca479dff19d284d6e3f778434e5 to your computer and use it in GitHub Desktop.
Save Silventino/c70daca479dff19d284d6e3f778434e5 to your computer and use it in GitHub Desktop.
Buscar CEP por endereço ou endereço por CEP
const puppeteer = require('puppeteer');
async function buscaCEP(txtbusca) {
try {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://buscacepinter.correios.com.br/app/endereco/index.php', { waitUntil: 'networkidle2' });
await page.waitForSelector('input[name=endereco]');
await page.$eval('input[name=endereco]', (el, txtbusca) => el.value = txtbusca, txtbusca);
await page.click('button[name="btn_pesquisar"]');
await page.waitForSelector('td[data-th=CEP]', { timeout: 8000 });
page.on('console', async (msg) => {
const msgArgs = msg.args();
for (let i = 0; i < msgArgs.length; ++i) {
console.log(await msgArgs[i].jsonValue());
}
});
const result = await page.evaluate(() => {
const tbody = document.querySelector('#resultado-DNEC tbody');
if (!tbody) {
throw new Error("CEP não encontrado.");
}
const rows = tbody.querySelectorAll("tr");
return Array.from(rows, (row) => {
const data = Array.from(row.querySelectorAll("td"));
const cepObj = {};
for (let i = 0; i < data.length; i++) {
const d = data[i];
cepObj[d.getAttribute("data-th") ?? "erro"] = d.textContent;
}
return cepObj;
})
});
browser.close();
return result;
}
catch (err) {
console.log("err", err);
throw new Error("CEP não encontrado;")
}
}
async function teste() {
console.log("#################################");
console.log("Buscar endereço pelo CEP:");
const teste1 = await buscaCEP("07262130");
console.log("resultado:", teste1);
console.log("#################################");
console.log("Buscar CEP pelo endereço:");
const teste2 = await buscaCEP("Rua Dois Jardim Eliane São Paulo SP");
console.log("resultado:", teste2);
}
teste();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment