节点模块“请求”返回不完整的HTML
我希望使用下面的代码段中的刮刀拉网络上从远程无线电统计:节点模块“请求”返回不完整的HTML
var request = require('request');
var radioURL = '192.10.1.65';
request.get({
url: pageURL
}, (error, response, html) => {
console.log(html);
控制台输出以下HTML:
<html>
<head>
<link rel="stylesheet" type="text/css" href="2.22.css">
<script type="text/javascript" src="2.22.js">"></script>
</head>
<body onLoad="show('viewPage=10');">
<div id="logo"><img src="logo.jpg"></div>
<div id="menu"></div>
<div id="reboot"><center><input type="button" value="Reboot" onclick="javascript:show('reboot=1');"></center></div>
<div id="info"></div>
<div id="header"></div>
<div id="content"></div>
</body>
有效载荷我很感兴趣,解析出驻留在div标签中使用id =“内容”。里面有一个表格,里面的表格是一张表格,里面包含了我所有的数据。下图显示了对扩展页面的检查,以查看td标签中相应值的“电压”。我在请求中尝试了不同的头部组合,以及超时认为网络延迟是问题的一部分。我如何获得div元素下面的元素?
谢谢。
调用request.get()
检索Web服务器发送给浏览器的RAW HTML。这就是你得到的。如果您在查看该页面的同时在浏览器中执行查看/源代码,则这与您将看到的内容相同。
如果网页的构建方式是使用Javascript向页面添加内容,那么您将不会看到request.get()
的新内容,因为在使用request.get()
检索数据时没有运行Javascript。您只是对服务器执行HTTP请求并获取原始页面内容。
如果你想访问通过Javascript添加的内容,那么你需要使用通常所说的“无头浏览器”,它可以获取RAW HTML,在页面中运行Javascript并为您提供DOM-用于访问使用Javascript插入的内容。
您可以在这里看到可以在nodejs中使用的无头浏览器模块列表:https://github.com/dhamaniasad/HeadlessBrowsers。我对他们中的任何人都没有亲身经历,但是我在这里看到的堆栈溢出最多的是Nightmare,X-Ray和PhantomJS。
对于站点刮,我是X射线的一个巨大的倡导者。它是有据可查的,但在你的情况,你会去基本上
xray('http://192.10.1.65', 'form-elements-you-are-targetting')(fn)
https://github.com/matthewmueller/x-ray
这是非常,非常好。