70 lines
2.3 KiB
JavaScript
70 lines
2.3 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
|
|
async function debugPBTech() {
|
|
const browser = await puppeteer.launch({
|
|
headless: 'new',
|
|
args: ['--no-sandbox', '--disable-setuid-sandbox']
|
|
});
|
|
|
|
const page = await browser.newPage();
|
|
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36');
|
|
|
|
console.log('Loading PB Tech CPU page...');
|
|
await page.goto('https://www.pbtech.co.nz/category/components/cpus', {
|
|
waitUntil: 'networkidle2',
|
|
timeout: 30000
|
|
});
|
|
|
|
console.log('\n=== LOOKING FOR ACTUAL PRODUCT CARDS ===');
|
|
|
|
const info = await page.evaluate(() => {
|
|
// Look for cards/items that have both price and product ID
|
|
const buttons = document.querySelectorAll('[data-product-id]');
|
|
const results = [];
|
|
|
|
buttons.forEach((btn, index) => {
|
|
if (index >= 3) return; // Just first 3
|
|
|
|
const productId = btn.getAttribute('data-product-id');
|
|
const price = btn.getAttribute('data-price');
|
|
|
|
// Try to find parent card/container
|
|
let parent = btn.closest('.card, .item, [class*="card"], article, .grid-item, .product-grid-item');
|
|
if (!parent) {
|
|
parent = btn.parentElement?.parentElement?.parentElement; // Go up a few levels
|
|
}
|
|
|
|
if (parent) {
|
|
const nameEl = parent.querySelector('h3, h4, h5, .title, [class*="title"], [class*="name"], a[title]');
|
|
const priceEl = parent.querySelector('.price, [class*="price"], .cost');
|
|
|
|
results.push({
|
|
productId: productId,
|
|
buttonPrice: price,
|
|
name: nameEl?.textContent?.trim() || nameEl?.getAttribute('title'),
|
|
priceText: priceEl?.textContent?.trim(),
|
|
parentHTML: parent.outerHTML.substring(0, 800),
|
|
parentClass: parent.className
|
|
});
|
|
}
|
|
});
|
|
|
|
return results;
|
|
});
|
|
|
|
console.log('\nProduct details:');
|
|
info.forEach((p, i) => {
|
|
console.log(`\n--- Product ${i + 1} ---`);
|
|
console.log(`Product ID: ${p.productId}`);
|
|
console.log(`Button Price: $${p.buttonPrice}`);
|
|
console.log(`Name: ${p.name}`);
|
|
console.log(`Price Text: ${p.priceText}`);
|
|
console.log(`Parent Class: ${p.parentClass}`);
|
|
console.log(`Parent HTML: ${p.parentHTML}...`);
|
|
});
|
|
|
|
await browser.close();
|
|
}
|
|
|
|
debugPBTech().catch(console.error);
|