Advertisement
alperiox

puppeteer script

Nov 29th, 2022
1,140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 1.54 KB | Source Code | 0 0
  1. const puppeteer  = require('puppeteer');
  2.  
  3. async function main() {
  4.     const start = Date.now();
  5.  
  6.     const browser = await puppeteer.launch({ headless: true })
  7.     const page = await browser.newPage();
  8.     await page.goto('https://danube-webshop.herokuapp.com/', { waitUntil: 'networkidle2' })
  9.  
  10.     await page.waitForSelector('ul.sidebar-list');
  11.  
  12.     await Promise.all([
  13.         page.waitForNavigation(),
  14.         page.click("ul[class='sidebar-list'] > li > a"),
  15. ]);
  16.  
  17.     await page.waitForSelector("li[class='preview']");
  18.     const books = await page.evaluateHandle(
  19.         () => [...document.querySelectorAll("li[class='preview']")]
  20.     )
  21.  
  22.     const processed_data = await page.evaluate(elements => {
  23.         let data = []
  24.         elements.forEach( element =>
  25.             {
  26.                 let title = element.querySelector("div.preview-title").innerHTML;
  27.                 let author = element.querySelector("div.preview-author").innerHTML;
  28.                 let rating = element.querySelector("div.preview-details > p.preview-rating").innerHTML;
  29.                 let price = element.querySelector("div.preview-details > p.preview-price").innerHTML;
  30.                
  31.                 let result = {title: title, author: author, rating: rating, price: price}
  32.                 data.push(result);
  33.             })
  34.         return data
  35.     }, books)
  36.    
  37.     console.log(processed_data)
  38.     await page.close();
  39.     await browser.close();
  40.  
  41.     const end = Date.now();
  42.     console.log(`Execution time: ${(end - start) / 1000} s`);
  43. }
  44.  
  45. main();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement