javascript - 所有脚本和页面加载完成后如何获取所有html数据? ( puppeteer 师)

标签 javascript node.js parsing web-scraping puppeteer

我终于想通了如何使用 Node.js。安装了所有库/扩展。所以 puppeteer 正在工作,但就像以前使用 Xmlhttp 一样......它只获取页面的模板/正文,没有需要的信息。在浏览器(Web 应用程序?)中打开页面几秒钟后,页面上的所有脚本都会启动。加载整个页面后,我需要在某些标签内获取信息。另外,我会问,是否可以使用纯 JavaScript,因为我不像代码那样使用 jQuery。所以它对我来说难度加倍......

这是我目前所拥有的。

const puppeteer = require('puppeteer');
const $ = require('cheerio');
let browser;
let page;

const url = "really long link with latitude and attitude";

(async () => puppeteer
  .launch()
  .then(await function(browser) {
    return browser.newPage();
})
  .then(await function(page) {
    return page.goto(url).then(function() {
      return page.content();
    });
  })
  .then(await function(html) {
    $('strong', html).each(function() {
      console.log($(this).text());
    });
  })
  .catch(function(err) {
    //handle error
  }))();

我只得到强标签内的模板默认正文元素。但它应该包含比仅 10 项更多的数据。

最佳答案

如果你想要完整的 html 与 inspect 相同?在这里:

    const puppeteer = require('puppeteer');

    (async function main() {
      try {
        const browser = await puppeteer.launch();
        const [page] = await browser.pages();

        await page.goto('https://example.org/', { waitUntil: 'networkidle0' });
        const data = await page.evaluate(() => document.querySelector('*').outerHTML);

        console.log(data);

        await browser.close();
      } catch (err) {
        console.error(err);
      }
    })();

关于javascript - 所有脚本和页面加载完成后如何获取所有html数据? ( puppeteer 师),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54563410/

相关文章:

javascript - Youtube API - 无法在 'postMessage' 上执行 'DOMWindow'

node.js - NPM 没有创建 .bin 目录

javascript - 为什么对对象的引用被其值替换

c - 大文件解析

java - 在 Java 中解析日期的毫秒分数

javascript - D3 JSON数据转换

javascript - django ajax javascript 不工作

javascript - PHP 中的图像和可见性

Node.js For 循环异步请求

java - 尝试解析数组时出现空指针异常(java)