Skip to content

Instantly share code, notes, and snippets.

@dwerdo
Created January 10, 2018 07:34
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 dwerdo/9d6761d203964162561b3349b64c71df to your computer and use it in GitHub Desktop.
Save dwerdo/9d6761d203964162561b3349b64c71df to your computer and use it in GitHub Desktop.
Node scraper
const puppeteer = require('puppeteer');
const VIN_SELECTOR = '#page > div > div.pane-content-constrain > main > div > div > div > div > section.side > aside > p.extra-info > span:nth-child(3)';
let vins = [];
async function run() {
let browser = await puppeteer.launch({
headless: false
});
let pages = await browser.pages();
await pages[0].goto('https://tesla.com/used');
let carHandles = await pages[0].$$('.vehicle-link');
for (let i = 0; i < carHandles.length; i++) {
await pages[0].waitForSelector('.vehicle-link');
carHandles[i].click();
}
console.log('Finished clicking.');
let count = 0;
while (count < carHandles.length) {
pages = await browser.pages();
count = pages.length;
}
for (let i = 1; i < carHandles.length; i++) {
let vin = await pages[i].evaluate((sel) => {
return document.querySelector(sel).innerHTML;
}, VIN_SELECTOR);
vins.push(vin);
await pages[i].close();
}
for (let i = 0; i < vins.length; i++) {
console.log(`${i + 1}: ${vins[i]}`);
}
browser.close();
}
run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment