I want to scrape many websites at once. So, I would prefer to have URL written in the result alongside with the other data that get scrapped. But I don't know how.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto('https://www.amazon.com/')
await page.waitForTimeout( 10000 );
const localStorageData = await page.evaluate(() => {
let json = {};
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
json[key] = localStorage.getItem(key);
}
return json;
});
const data = {};
for (let entry of Object.entries(data)) {
data[entry.key] = entry.value;
}
console.log(localStorageData)
await browser.close()
})()
You can simply add the URL you use to your JSON:
const puppeteer = require("puppeteer");
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
const url = "https://www.amazon.com/";
await page.goto(url);
await page.waitForTimeout(10000);
const localStorageData = await page.evaluate((url) => {
let json = {};
for (let i = 0; i < localStorage.length; i++) {
const key = localStorage.key(i);
json[key] = localStorage.getItem(key);
}
return json;
});
localStorageData["url"] = url;
const data = {};
for (let entry of Object.entries(data)) {
data[entry.key] = entry.value;
}
console.log(localStorageData);
await browser.close();
})();