search.js (1342B)
1 /** 2 * @license 3 * Copyright 2017 Google Inc. 4 * SPDX-License-Identifier: Apache-2.0 5 */ 6 7 /** 8 * @fileoverview Search developers.google.com/web for articles tagged 9 * "Headless Chrome" and scrape results from the results page. 10 */ 11 12 'use strict'; 13 14 const puppeteer = require('puppeteer'); 15 16 (async () => { 17 const browser = await puppeteer.launch(); 18 const page = await browser.newPage(); 19 20 await page.goto('https://developers.google.com/web/'); 21 22 // Type into search box. 23 await page.type('.devsite-search-field', 'Headless Chrome'); 24 25 // Wait for suggest overlay to appear and click "show all results". 26 const allResultsSelector = '.devsite-suggest-all-results'; 27 await page.waitForSelector(allResultsSelector); 28 await page.click(allResultsSelector); 29 30 // Wait for the results page to load and display the results. 31 const resultsSelector = '.gsc-table-result a.gs-title[href]'; 32 await page.waitForSelector(resultsSelector); 33 34 // Extract the results from the page. 35 const links = await page.evaluate(resultsSelector => { 36 const anchors = Array.from(document.querySelectorAll(resultsSelector)); 37 return anchors.map(anchor => { 38 const title = anchor.textContent.split('|')[0].trim(); 39 return `${title} - ${anchor.href}`; 40 }); 41 }, resultsSelector); 42 console.log(links.join('\n')); 43 44 await browser.close(); 45 })();