Hi,
I recived an error “Cannot read properties of undefined (reading ‘innerText’)”. But it’s a strange, because when I changed var “i” to a constant value everything is working. And first element in “spread” array does not throw an above error. I will appreciate any help.
const puppeteer = require('puppeteer');
const fs = require('fs');
(async function () {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.basketball-reference.com/leagues/NBA_2024_ratings.html#ratings');
const data = await page.evaluate(function() {
const table = document.getElementsByClassName("sortable stats_table now_sortable")[0]
.getElementsByTagName("tbody")[0]
.getElementsByTagName("tr")
const spread = [];
for(let i = 0; i<table.length; i++) {
spread.push(
{
"rank": table[i].getElementsByTagName("th")[0].innerText,
"name": table[i].getElementsByTagName("td")[0].innerText,
"conf": table[i].getElementsByTagName("td")[1].innerText
// "div" :table[i].getElementsByTagName("td")[2].innerText,
// "wins": table[i].getElementsByTagName("td")[3].innerText,
// "losses" :table[i].getElementsByTagName("td")[4].innerText,
// "wins/loss%": table[i].getElementsByTagName("td")[5].innerText,
// "mov" :table[i].getElementsByTagName("td")[6].innerText,
// "oRtg": table[i].getElementsByTagName("td")[7].innerText,
// "dRtg" :table[i].getElementsByTagName("td")[8].innerText,
// "NRtg": table[i].getElementsByTagName("td")[9].innerText,
// "mov/A" :table[i].getElementsByTagName("td")[10].innerText,
// "oRtg/A": table[i].getElementsByTagName("td")[11].innerText,
// "dRtg/A" :table[i].getElementsByTagName("td")[12].innerText,
// "NRtg/A" :table[i].getElementsByTagName("td")[13].innerText
}
)
}
return spread;
})
fs.writeFile(`data.json`, JSON.stringify(data), (err) => {
if (err) {
console.log(err);
} else {
console.log(`Data of Page Scraped`);
}
});
})();