1 pièce(s) jointe(s)
Générer un fichier JSON avec Puppeteer
Bonjour à toutes et à tous,
Je viens de commencer mon alternance dans une TPE de développement web, et je suis le seul à faire du NodeJS. Je vous explique mon problème, j'ai développé une petite API avec Puppeteer permettant de faire du web scraping sur des sites dynamiques. Mon API me renvoie dans la console ce que j'ai récupéré au format JSON, et je souhaiterais enregistrer ce contenu dans un fichier JSON. J'ai utilisé le paquet 'fs', puis j'ai utilisé la méthode wrietFileSync de ce paquet pour écrire le contenu du site au format JSON dans mon fichier, mais quand je lance mon script, ça me renvoie :
Pièce jointe 412473
Bien-sûr j'ai cherché de mon côté pour voir si je trouvais quelque chose, mais malheureusement mes recherches ont été infructueuses...
Je joins le code de l'API :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
const puppeteer = require('puppeteer')
const fs = require('fs')
let bookingUrl = 'https://www.astrazeneca.com/media-centre/press-releases.html';
(async () => {
const browser = await puppeteer.launch({ headless: true })
const page = await browser.newPage()
await page.setViewport({ width: 1920, height: 926 })
await page.goto(bookingUrl)
// Get page details
let newsData = await page.evaluate(() => {
let news = []
let newsElements = document.querySelectorAll('.filter-items__results-list .filter-items__results-list-item')
newsElements.forEach((newsElement) => {
let newsJson = {}
try {
newsJson.name = newsElement.querySelector('a div .filter-items__results-item-title').innerText
newsJson.elmementLink = newsElement.querySelector('.filter-items__results-item').href
newsJson.created = Date.now()
newsJson.abstract = ''
}
catch (exception) {
}
news.push(newsJson)
})
const newsTrimmed = news.filter(n => n !== undefined)
fs.writeFileSync('news.json',
JSON.stringify(newsTrimmed, null, 4),
(err) => console.log('File successfully written !'))
return news
})
console.dir(newsData)
})() |
Merci d'avance !