नीचे दिया गया कोड डेटाबेस से एक url और article_id प्राप्त करता है। यह यूआरएल पृष्ठ को क्रॉल करता है, यूआरएल में मौजूद छवियों के स्नैप लेता है और इसे मेरे रिमोट सर्वर में सहेजता है।

पीएस: जावास्क्रिप्ट पर नोब!

(async () => {
client.query("SELECT DISTINCT url,article_id FROM public.content_paraarticle",(err,res,fields)=>{
if (err)  throw err;
// console.log(res)
for(var i=0;i<res.rows.length;i++)
{

// Set up browser and page.
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    page.setViewport({ width: 1280, height: 926 });
    var str1='.png';


    // arr.push(res[i])
    var id=(res.rows[i].article_id);
    var str=id+str1;
    console.log(str);
    var url=(res.rows[i].url);

    console.log('taken');
    await Promise.race([
    await page.goto('https://www.thehindu.com/news/cities/kozhikode/skilled-entrepreneurs-centres-in-35-panchayats-in-kozhikode/article29434054.ece?utm_source=udmprecommendation_other-states&utm_medium=sticky_footer&transactionId=5abd798d30a44245b32a3fde2925c44d', {waitUntil: 'load'}),
    new Promise(x => setTimeout(x, 60000)),
    ]);

    const Image = await page.$('body > div.container-main > div.jscroll > div > div > div > section > div > div > div > div:nth-child(2) > div.lead-img-cont > div > picture > img');
    console.log('screenshot started to get taken');
    const shot=await Image.screenshot({
    path: str,
    omitBackground: true,
    });
    console.log('screenshot taken');
    await browser.close();



}
client.end()
});

})();

2
Sachin 19 सितंबर 2019, 13:40

1 उत्तर

सबसे बढ़िया उत्तर

आपने एक फ़ंक्शन को client.query पर पास कर दिया है और आपकी प्रतीक्षा कॉल उस फ़ंक्शन में हैं, इसलिए आपको उस फ़ंक्शन को async बनाने की आवश्यकता है।

 client.query("SELECT DISTINCT url,article_id FROM public.content_paraarticle", 
               async (err,res,fields) => {
               // your await calls 
              }
3
karthikdivi 19 सितंबर 2019, 10:44