Bonjour à tous,
J’essaye d’extraire les produits d’une liste d’envie Amazon via Puppeteer. Cela fonctionne mais uniquement en mode non headless.
J’obtiens une erreur « Navigation Timeout Exceeded: 30000ms exceeded » en mode headless, pas moyen de trouver la cause … Vous avez une idée ?
Voilà le code en question :
const puppeteer = require('puppeteer')
const cheerio = require('cheerio');
(async () => {
const browser = await puppeteer.launch({headless: true})
const page = await browser.newPage()
await page.setRequestInterception(true)
page.on('request', request => {
if (request.resourceType() === 'image') {
request.abort()
} else {
request.continue()
}
})
await page.goto('http://amzn.eu/ebKNEqg')
await scroll(page)
let content = await page.content()
let $ = cheerio.load(content)
const whishlist = []
$('h3.a-size-base a.a-link-normal').each((i, elem) => {
whishlist[i] = $(elem).attr('href')
})
console.log(whishlist)
await browser.close()
})()
async function scroll (page) {
let i = 0
while (await page.$('.wl-see-more') !== null) {
i++
// Scroll to bottom to load more
await page.evaluate(_ => {
window.scrollBy(0, window.innerHeight)
})
console.log('Loop #' + i)
}
}
Si vous avez des astuces pour accélérer le traitement, je suis preneur aussi (J’ai commencé à bloquer le chargement des images).