Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript中的获取获取呈现的HTML_Javascript_Node.js_Fetch_Jsdom - Fatal编程技术网

从javascript中的获取获取呈现的HTML

从javascript中的获取获取呈现的HTML,javascript,node.js,fetch,jsdom,Javascript,Node.js,Fetch,Jsdom,我正在尝试从需要呈现的站点获取表。这会导致我获取的数据不完整。正文是空的,因为脚本还没有运行 起初,我想在浏览器中获取所有内容,但我不能这样做,因为没有设置CORS头,而且我没有访问服务器的权限 然后,我尝试了一种使用node.js、node fetch和JSDom的服务器方法。我阅读了文档,找到了选项{佯装evisial:true},但这并没有改变任何事情。我在下面发布了一个简单的代码: const fetch = require('node-fetch'); const jsdom = re

我正在尝试从需要呈现的站点获取表。这会导致我获取的数据不完整。正文是空的,因为脚本还没有运行

起初,我想在浏览器中获取所有内容,但我不能这样做,因为没有设置CORS头,而且我没有访问服务器的权限

然后,我尝试了一种使用node.js、node fetch和JSDom的服务器方法。我阅读了文档,找到了选项{佯装evisial:true},但这并没有改变任何事情。我在下面发布了一个简单的代码:

const fetch = require('node-fetch');
const jsdom = require("jsdom");
const { JSDOM } = jsdom;

let tableHTML = fetch('https://www.travsport.se/uppfodare/visa/200336/starter')
.then(res => res.text())
    .then(body => {
      console.log(body)
      const dom = new JSDOM(body, {pretendToBeVisual: true })
      return dom.window.document.querySelector('.sportinfo_tab table').innerHTML
    })
    .then(table => console.log(table))

我希望输出的是表的html,但到目前为止,我只得到响应中的元数据和脚本,这使得在提取innerHTML时代码崩溃。

为什么不使用google chrome headless

我认为您引用的站点不适用于
--dump dom
,但您可以激活
--remote debuging port=9222
,并按照中的说明执行任何操作

另一个有用的参考:

您试图实现的功能称为网页爬网。节点获取只获取页面,但它不像浏览器那样呈现页面。您可以尝试这个模块,但我不确定它是否与SPA一起工作,您需要使用一些工具,如Puppeter、phamtomjs或selenium来呈现页面。您只接收html,而不是浏览器显示的内容