Last active
January 16, 2019 10:19
-
-
Save silent-lad/374eea183f58be5e37962b4302f8970a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const puppeteer = require("puppeteer"); | |
const chalk = require("chalk"); | |
var fs = require("fs"); | |
// MY OCD of colorful console.logs for debugging... IT HELPS | |
const error = chalk.bold.red; | |
const success = chalk.keyword("green"); | |
(async () => { | |
try { | |
// open the headless browser | |
var browser = await puppeteer.launch({ headless: true }); | |
// open a new page | |
var page = await browser.newPage(); | |
// enter url in page | |
await page.goto(`https://news.ycombinator.com/`); | |
await page.waitForSelector("a.storylink"); | |
var news = await page.evaluate(() => { | |
var titleNodeList = document.querySelectorAll(`a.storylink`); | |
var ageList = document.querySelectorAll(`span.age`); | |
var scoreList = document.querySelectorAll(`span.score`); | |
var titleLinkArray = []; | |
for (var i = 0; i < titleNodeList.length; i++) { | |
titleLinkArray[i] = { | |
title: titleNodeList[i].innerText.trim(), | |
link: titleNodeList[i].getAttribute("href"), | |
age: ageList[i].innerText.trim(), | |
score: scoreList[i].innerText.trim() | |
}; | |
} | |
return titleLinkArray; | |
}); | |
// console.log(news); | |
await browser.close(); | |
// Writing the news inside a json file | |
fs.writeFile("hackernews.json", JSON.stringify(news), function(err) { | |
if (err) throw err; | |
console.log("Saved!"); | |
}); | |
console.log(success("Browser Closed")); | |
} catch (err) { | |
// Catch and display errors | |
console.log(error(err)); | |
await browser.close(); | |
console.log(error("Browser Closed")); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment