【问题标题】:Can't get the fully loaded html for a page using puppeteer无法使用 puppeteer 获取页面的完全加载的 html
【发布时间】:2020-10-10 20:01:44
【问题描述】:

我正在尝试获取 this page 的完整 html。它有一个加载缓慢的电子表格。在截取页面的屏幕截图时,我可以获取包含的电子表格。但是我无法获得电子表格的 htmldocument.body.outerHTML 不包括电子表格的 html。就好像 puppeteer 在电子表格加载之前仍在查看页面。

如何获取完整加载的 HTML,包括电子表格的 HTML?


(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto("http://www.electproject.org/2016g", {
    timeout: 11000,
    waitUntil: "networkidle0",
  });
  await page.setViewport({
    width: 640,
    height: 880,
    deviceScaleFactor: 1,
  });
  await page.screenshot({ path: "buddy-screenshot.png", format: "A4" }); // this screenshot displays the spreadsheet
  let html = await page.evaluate(() => document.body.outerHTML); // this returns the html excluding the spreadsheet
  await browser.close();
})();

【问题讨论】:

    标签: javascript node.js web-scraping puppeteer


    【解决方案1】:

    电子表格在 iframe 中,因此您需要先获取 iframe:

    const puppeteer = require('puppeteer');
    
    (async () => {
      const browser = await puppeteer.launch();
      const page = await browser.newPage();
    
      await page.goto("http://www.electproject.org/2016g", {
        timeout: 11000,
        waitUntil: "networkidle0",
      });
      await page.setViewport({
        width: 640,
        height: 880,
        deviceScaleFactor: 1,
      });
    
      const spreadsheetFrame = page.frames().find(
        frame => frame.url().startsWith('https://docs.google.com/spreadsheets/')
      );
    
      let spreadsheetHead = await spreadsheetFrame.evaluate(
        () => document.body.querySelector('#top-bar').innerText
      );
    
      console.log(spreadsheetHead); // 2016 November General Election : Turnout Rates
    
      await browser.close();
    })();
    

    【讨论】:

    • 谢谢,这让我更接近了,因为我没有意识到它是一个 iframe。但它仍然只是在不加载电子表格数据的情况下获取 iframe,和以前一样。我最终只是直接得到了电子表格。但我仍然很好奇是否可以在不转到链接电子表格的情况下在 iframe 中抓取电子表格。
    • 也许你需要再等一会儿使用frame.waitForSelector()frame.waitForFunction()
    猜你喜欢
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2020-05-13
    • 2014-01-17
    相关资源
    最近更新 更多