使用NodeJS从外部页面返回Javascript变量数据

时间:2017-07-13 18:24:44

标签: javascript html node.js

我正在尝试向页面发送请求并抓取整个DOM。基本上是爬行。在这个网站上,有一个变量直接加载到带有一些数据的HTML(不是脚本文件)中。使用我使用request的NodeJS后端,我将如何请求此页面并返回变量的数据?这是一个例子:

http://some-page.com/index.html

<html>
    <head>
        <script>
            var my_var = {
                title: "Good title",
                description: "Nice description",
                page: 5
            };
        </script>
    </head>
</html>

如果我访问该网站,请打开控制台并输入my_var我可以在控制台中看到内容,因此它是一个全局变量。

我该怎么办?如果需要,我可以使用另一个请求库。

1 个答案:

答案 0 :(得分:2)

您正在寻找jsdom:https://github.com/tmpvar/jsdom

const dom = new JSDOM(`<body>
  <script>document.body.appendChild(document.createElement("hr"));</script>
</body>`, { runScripts: "dangerously" });

// The script will be executed and modify the DOM:
dom.window.document.body.children.length === 2;

它还附带一个虚拟控制台

  

虚拟控制台

     

与网络浏览器一样,jsdom具有“控制台”的概念。这个记录   通过脚本执行从页面直接发送的信息   文档内部,以及来自jsdom的信息   实施本身。