Faizan Ahmad
Faizan Ahmad

Reputation: 382

Iframe not loading properly in puppeteer

I am trying to parse a website using puppeteer, everything works well but iframe does not load properly. This is how it loads

enter image description here

Here is my code

    args: [
        "--no-sandbox",
    ],
  });
  const page = await browser.newPage();
  await page.setViewport({ width: 1440, height: 600 })
  // await waitForFrame(page);
  await page.goto(url, {
        waitUntil: 'networkidle2',
        timeout: 0,
  });
await page.evaluate(({ applicationUrl}: any ) => {
// Here i want to evaluate iframes
})

When i try to log iframes, i don't get the actual iframe link on my parsed website

enter image description here

Also i don't see the iframe tag in parsed website

enter image description here

But When i look into the actual page, i can see the iframe link

enter image description here

and also the iframe tag

enter image description here

Here is the link to actual page which i am trying to parse https://leza.notion.site/Trade-log-721b1ebb4cc74175abb55408b6f2d0c3

Any help would be highly appreciated

Upvotes: 2

Views: 3521

Answers (1)

traynor
traynor

Reputation: 8622

it's lazy loaded

try scrolling around and then wait some for iframe to load, and then get the iframe:

await page.goto(url, {
    waitUntil: 'networkidle2',
    timeout: 0,
});


await page.evaluate(async() => {

    const scroll = document.querySelector('.notion-scroller');

    scroll.scrollBy(0, 900);

    document.querySelector('.notion-video-block').scrollIntoView();

});


// wait some for iframe to load..
await page.waitFor(5000);


const iframeSelector = 'iframe';

const frameHandle = await page.$(iframeSelector);

const src = await page.evaluate(el => el.src, frameHandle);
console.log(src);

Upvotes: 1

Related Questions