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