【问题标题】:Puppeteer not able to get page's innerHTML using evaluatePuppeteer 无法使用评估获取页面的内部 HTML
【发布时间】:2018-09-08 16:25:08
【问题描述】:

我正在尝试从网站获取 HTML,但 puppeteer 无法获取 HTML。相同的代码适用于我正在下载的多个其他网站。

是什么让这个网站与众不同并且不允许评估功能获取内容?

即使 jQuery 也无法访问该站点上的元素。下载的文件似乎有一个 iframe,但我不确定这是否是问题所在。

const puppeteer = require('puppeteer');
const fse = require('fs-extra');
const fs = require('fs');
const nodepath = require('path')
var url = 'http://example.com';

var oddsOutputPath = nodepath.join(__dirname, '..', 'public', 'outputdir');

console.log(oddsOutputPath);
fse.ensureDir(oddsOutputPath).then(() => { console.log('success!') }).catch(err => { console.error(err) });

function delay(timeout) {
  return new Promise((resolve) => {
    setTimeout(resolve, timeout);
  });
}

(async () => {
  const browser = await puppeteer.launch({
    networkIdleTimeout: 0,
    timeout: 360000,
    headless: false,
    ignoreHTTPSErrors: true,
    args: [
      '--no-sandbox'
    ]
  });

  const page = await browser.newPage();
  await page.setRequestInterception(true);
  page.on('request', request => {
    if (['image', /* 'stylesheet', */ 'font'].indexOf(request.resourceType()) !== -1) {
      request.abort();
    } else {
      request.continue();
    }
  });

  try {
    await page.setViewport({ width: 1366, height: 653 });
    await page.goto(url, { waitUntil: 'networkidle2', timeout: 360000 });
    await delay(45000);

    outputPath = oddsOutputPath + "/init.html";
    let html = await page.evaluate(() => document.body.innerHTML);
    fs.writeFileSync(outputPath, html);


    console.log('script has ended');
    await delay(5000);


  } catch (e) {
    var error = "'" + e + "'";
    console.log(error)
    process.exit()
  }
  finally {
    await browser.close();
  }


})();

【问题讨论】:

    标签: javascript jquery node.js puppeteer


    【解决方案1】:

    您尝试访问的页面会将其大部分内容加载到 iframe 中。

    我建议直接访问 iframe 以抓取其内容:

    var url = 'https://elitebet-sportsbook-web.exaloc.net/prelive_event/?token=&language=en';
    

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2013-05-18
      • 2020-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-03-13
      相关资源
      最近更新 更多