3

我正在尝试使用nodejs从js文件中的html文件中按id获取元素。我收到错误“未定义文档 ID”,因为默认情况下节点不提供文档对象模型。

那么如何在 nodejs 中使用document.getElementById()呢?

谢谢 !

4

2 回答 2

2

如果您想在同一服务器中解析文件,您可能应该使用其中的一些选项,因为 nodejs 它只是一个 JavaScript 实现,没有windowdocument对象,请参见this。但要准确回答您的问题:

如何在 nodejs 中使用document.getElementById() ?

你可以使用Puppeteer来做到这一点

Puppeteer 是一个 Node 库,它提供了一个高级 API 来通过 DevTools 协议控制无头 Chrome 或 Chromium。它还可以配置为使用完整(非无头)Chrome 或 Chromium。

这是一个基本的例子:

const puppeteer = require('puppeteer');

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


        page = await browser.newPage();
        await page.goto('http://example.com/some.html', {waitUntil: 'load'});


    const newPage = await page.evaluate(() => {

        return  document.getElementById("idexample").innerHTML;

        });

     console.log(newPage)

  })();
于 2018-09-10T12:15:44.300 回答
1

使用 JSDOM npm 包:

jsdom 是许多 web 标准的纯 JavaScript 实现,特别是 WHATWG DOM 和 HTML 标准,用于 Node.js。一般来说,该项目的目标是模拟足够多的 Web 浏览器子集,以用于测试和抓取真实世界的 Web 应用程序。 https://github.com/jsdom/jsdom

于 2018-09-10T11:27:23.550 回答