I made the code below to scrape some data from a webpage. When I execute this message show up in the log console: Error: Evaluation failed: TypeError: Cannot read property 'length' of undefined at puppeteer_evaluation_script:7:39 Browser Closed
This is my code:
const puppeteer = require("puppeteer");
const chalk = require("chalk");
var fs = require("fs");
const error = chalk.bold.red;
const success = chalk.keyword("green");
(async () => {
try {
var browser = await puppeteer.launch({
headless: false,
defaultViewport: null
});
var page = await browser.newPage();
await page.setDefaultNavigationTimeout(0);
await page.goto('https://synotec.tn/marque/bomi/?ppp=-1');
await page.waitForSelector('h4.product-title');
var news = await page.evaluate(() => {
var titleNodeList = document.querySelectorAll('h4.product-title').firstChild;;
var linkList = document.getElementsByClassName('product-title').firstChild;
var priceList = document.querySelectorAll('ins');
var stockStateList = document.querySelectorAll('p.in-stock');
var titleLinkArray = [];
for (var i=0; i<titleNodeList.length; i++){
titleLinkArray[i] = {
title: titleNodeList[i].innerText.trim(),
link: linkList[i].getAttribute("href"),
price: priceList[i].innerText.trim(),
stock: stockStateList[i].innerText.trim()
}
}
return titleLinkArray;
}
)
await browser.close();
fs.writeFile("bomi.json", JSON.stringify(news), function(err) {
if (err) throw err;
console.log("Saved!");
});
console.log(success("Browser Closed"));
} catch (err) {
console.log(error(err));
await browser.close();
console.log(error("Browser Closed"));
}
})();