Skip to content

Instantly share code, notes, and snippets.

@JenieX
Forked from LearnWebCode/index.js
Created January 9, 2023 03:27
Show Gist options
  • Save JenieX/63a4bfca8747d23c4f44a7fe1f2ed214 to your computer and use it in GitHub Desktop.
Save JenieX/63a4bfca8747d23c4f44a7fe1f2ed214 to your computer and use it in GitHub Desktop.
Puppeteer / Node.js Automation & Web Scraping Tutorial from YouTube
// in a new folder be sure to run "npm init -y" and "npm install puppeteer"
const puppeteer = require("puppeteer")
const fs = require("fs/promises")
async function start() {
const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.goto("https://learnwebcode.github.io/practice-requests/")
const names = await page.evaluate(() => {
return Array.from(document.querySelectorAll(".info strong")).map(x => x.textContent)
})
await fs.writeFile("names.txt", names.join("\r\n"))
await page.click("#clickme")
const clickedData = await page.$eval("#data", el => el.textContent)
console.log(clickedData)
const photos = await page.$$eval("img", imgs => {
return imgs.map(x => x.src)
})
await page.type("#ourfield", "blue")
await Promise.all([page.click("#ourform button"), page.waitForNavigation()])
const info = await page.$eval("#message", el => el.textContent)
console.log(info)
for (const photo of photos) {
const imagepage = await page.goto(photo)
await fs.writeFile(photo.split("/").pop(), await imagepage.buffer())
}
await browser.close()
}
start()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment