Files
tenderpilot/etendersni-list.mjs

56 lines
1.6 KiB
JavaScript

import axios from 'axios';
import * as cheerio from 'cheerio';
const baseUrl = 'https://etendersni.gov.uk';
// Try different potential URLs for the tenders list
const urls = [
'/api/search',
'/epps/home.do',
'/epps/viewInfo.do?section=newItems',
'/epps/viewInfo.do?section=notices',
];
(async () => {
for (const path of urls) {
try {
const url = baseUrl + path;
console.log(`\n=== Trying ${path} ===`);
const resp = await axios.get(url, { timeout: 8000 });
const $ = cheerio.load(resp.data);
// Look for any links with entryId or that look like tender details
const tenderLinks = [];
$('a').each((i, el) => {
const href = $(el).attr('href');
const text = $(el).text().trim();
if (href && (
href.includes('entryId') ||
href.includes('viewInfo') ||
href.includes('viewNotice') ||
href.includes('detail') ||
href.includes('tender') ||
text.match(/procurement|tender|notice|opportunity/i)
)) {
const fullUrl = href.startsWith('http') ? href : baseUrl + (href.startsWith('/') ? href : '/epps/' + href);
tenderLinks.push({
text: text.substring(0, 50),
href: fullUrl
});
}
});
if (tenderLinks.length > 0) {
console.log(`Found ${tenderLinks.length} potential tender links`);
tenderLinks.slice(0, 5).forEach(l => {
console.log(` "${l.text}" => ${l.href}`);
});
}
} catch (e) {
console.log(`Error: ${e.message.split('\n')[0]}`);
}
}
})();