mirror of
https://github.com/puppeteer/puppeteer
synced 2024-06-14 14:02:48 +00:00
b6ffa732ac
The previous selector is broken as of ~2 months ago, c.f. https://news.ycombinator.com/item?id=33027700 Changed from: <a class="titlelink"></a> To: <span class="titleline"> <a></a> </span>
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
const puppeteer = require('puppeteer');
|
|
|
|
/**
|
|
* To have Puppeteer fetch a Firefox binary for you, first run:
|
|
*
|
|
* PUPPETEER_PRODUCT=firefox npm install
|
|
*
|
|
* To get additional logging about which browser binary is executed,
|
|
* run this example as:
|
|
*
|
|
* DEBUG=puppeteer:launcher NODE_PATH=../ node examples/cross-browser.js
|
|
*
|
|
* You can set a custom binary with the `executablePath` launcher option.
|
|
*
|
|
*
|
|
*/
|
|
|
|
const firefoxOptions = {
|
|
product: 'firefox',
|
|
extraPrefsFirefox: {
|
|
// Enable additional Firefox logging from its protocol implementation
|
|
// 'remote.log.level': 'Trace',
|
|
},
|
|
// Make browser logs visible
|
|
dumpio: true,
|
|
};
|
|
|
|
(async () => {
|
|
const browser = await puppeteer.launch(firefoxOptions);
|
|
|
|
const page = await browser.newPage();
|
|
console.log(await browser.version());
|
|
|
|
await page.goto('https://news.ycombinator.com/');
|
|
|
|
// Extract articles from the page.
|
|
const resultsSelector = '.titleline > a';
|
|
const links = await page.evaluate(resultsSelector => {
|
|
const anchors = Array.from(document.querySelectorAll(resultsSelector));
|
|
return anchors.map(anchor => {
|
|
const title = anchor.textContent.trim();
|
|
return `${title} - ${anchor.href}`;
|
|
});
|
|
}, resultsSelector);
|
|
console.log(links.join('\n'));
|
|
|
|
await browser.close();
|
|
})();
|