मैं Puppeteer का उपयोग कर रहा हूं ताकि सभी छवियों को लोड करने के बाद वेबसाइट का स्क्रीनशॉट लेने का प्रयास किया जा सके लेकिन इसे काम पर नहीं लाया जा सके।Puppeteer सभी छवियों को लोड करने के लिए प्रतीक्षा करें, फिर स्क्रीनशॉट लें
const puppeteer = require('puppeteer');
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.digg.com/');
await page.setViewport({width: 1640, height: 800});
await page.evaluate(() => {
return Promise.resolve(window.scrollTo(0,document.body.scrollHeight));
});
await page.waitFor(1000);
await page.evaluate(() => {
var images = document.querySelectorAll('img');
function preLoad() {
var promises = [];
function loadImage(img) {
return new Promise(function(resolve,reject) {
if (img.complete) {
resolve(img)
}
img.onload = function() {
resolve(img);
};
img.onerror = function(e) {
resolve(img);
};
})
}
for (var i = 0; i < images.length; i++)
{
promises.push(loadImage(images[i]));
}
return Promise.all(promises);
}
return preLoad();
});
await page.screenshot({path: 'digg.png', fullPage: true});
browser.close();
})();
digg.com के मामले में कुछ छवियों को केवल तभी लोड किया जाता है जब आप स्क्रॉल करते हैं, क्या आप स्क्रॉलिंग के बाद छवियों को लोड करने की प्रतीक्षा करने के तरीके के बारे में जानते हैं? –
मुझे लगता है कि आपका समाधान काम करेगा, लेकिन - digg के होम पेज कैसे काम करता है इसका अध्ययन करने के बाद - मैं कहूंगा कि आपको थोड़ा सा स्क्रॉल करना होगा, जबकि आपके कोड में आप लगभग एक पूर्ण पृष्ठ से कूदेंगे। स्रोत में देखें - बहुत आलसी लोडिंग छवियां हैं जो केवल व्यूपोर्ट में लोड होंगी। – Vaviloff
मुझे लगता है कि यह होना चाहिए: {waitUntil: "networkidle"} की बजाय {"waitUntil": "networkidle"} – boblapointe