CSC portal Playwright scraper + import 16 open government IT vacancies
This commit is contained in:
33
scripts/csc-search.ts
Normal file
33
scripts/csc-search.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
/** Search the CSC job portal for a position keyword. Usage: npx tsx scripts/csc-search.ts "Computer Programmer" */
|
||||
import { chromium } from "playwright";
|
||||
|
||||
async function main() {
|
||||
const keyword = process.argv[2] ?? "Computer Programmer";
|
||||
const browser = await chromium.launch({ headless: true });
|
||||
const ctx = await browser.newContext({
|
||||
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
|
||||
viewport: { width: 1366, height: 900 },
|
||||
});
|
||||
const page = await ctx.newPage();
|
||||
await page.goto("https://csc.gov.ph/career/", { waitUntil: "domcontentloaded", timeout: 60000 });
|
||||
await page.waitForTimeout(4000);
|
||||
|
||||
await page.fill("#col2_filter", keyword);
|
||||
await page.click('button[name="sort_list"]', { noWaitAfter: true });
|
||||
await page.waitForLoadState("domcontentloaded");
|
||||
await page.waitForTimeout(6000);
|
||||
|
||||
// Show up to 100 rows if a length selector exists.
|
||||
const len = page.locator('select[name="jobs_length"]');
|
||||
if (await len.count()) {
|
||||
await len.selectOption("100").catch(() => {});
|
||||
await page.waitForTimeout(3000);
|
||||
}
|
||||
|
||||
const rows = await page.locator("table tbody tr").allInnerTexts();
|
||||
console.log(`rows: ${rows.length}`);
|
||||
for (const r of rows.slice(0, 60)) console.log("• " + r.replace(/\s*\n\s*/g, " | ").slice(0, 300));
|
||||
await page.screenshot({ path: "scripts/csc-search.png", fullPage: true });
|
||||
await browser.close();
|
||||
}
|
||||
main().catch((e) => { console.error(e); process.exit(1); });
|
||||
Reference in New Issue
Block a user