jsdom

jsdom

中文文档: https://segmentfault.com/a/1190000014844043

英文文档:https://www.w3school.com.cn/js/js_htmldom_elements.asp

jsdom是一个纯粹由 javascript 实现的一系列 web标准,特别是 WHATWG 组织制定的DOMHTML 标准,用于在 nodejs 中使用

执行脚本

jsdom最强大的功能是它可以在jsdom中执行脚本。这些脚本可以修改页面的内容并访问jsdom实现的所有Web平台API。

但是,这在处理不可信内容时也非常危险。 jsdom沙箱并不是万无一失的,在DOM的<script>内部运行的代码如果足够深入,就可以访问Node.js环境,从而访问您的计算机。 因此,默认情况下,执行嵌入在HTML中的脚本的功能是禁用的

要在页面内启用脚本,可以使用runScripts:"dangerously"选项

const jsdom = require("jsdom");
const { JSDOM } = jsdom;

const fs = require('fs')  // 读取文件
fs.readFile('crawl/yrx/js_test.html', 'utf8', function(err, data){
    const dom = new JSDOM(data, {
        url: 'http://match.yuanrenxue.com/match/2',
        referrer: 'http://match.yuanrenxue.com/match/2',
        contentType: "text/html",
        userAgent: "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
        includeNodeLocations: true,
        runScripts:"dangerously"  // 运行js脚本
    });
    console.log(dom.window.document.cookie);
    dom.window.close()
})


原文地址:https://www.cnblogs.com/kai-/p/14553971.html