我正在使用node.js通过正则表达式解析HTML以返回字符串。但是在这篇文章中有人告诉我这不是一个好主意:在node.js中从HTTP请求中提取特定字符串
有哪些更可靠的替代方案?
作为新手,教程链接会非常有帮助。我很难理解一些文档的解释。
作为新手,教程链接会非常有帮助。我很难理解一些文档的解释。
node-htmlparser用于处理HTML解析的繁重工作。此外,node-soupselect让您可以使用CSS样式选择器来查找特定元素。
然而,我看了你的其他问题,你真正应该问的问题不是“如何从HTML页面中抓取这些数据”,而是“是否有更好的方式来检索我要查找的数据?” 美国地质调查局(USGS)提供API以机器可读的形式提供其数据。
这里是您感兴趣的位置的JSON对象。要获取水库表面海拔的“最新瞬时值”,您需要下载该文件,执行var d = JSON.parse
,然后:
for (var i = 0; i < d.value.timeSeries.length; i++) {
if (d.value.timeSeries[i].variable.variableName == 'Elevation of reservoir water surface above datum, ft') {
var result = d.value.timeSeries[i].values[0].value[d.value.timeSeries[i].values[0].value.length-1];
}
}
result
现在将看起来像是{ dateTime: "2012-04-07T17:15:00.000-05:00", value: "1065.91" }
。
http.get
回调函数中定义var d = JSON.parse
和for语句吗? - mnort9http.get(..., function(res) { ... });
建立连接并开始接收数据时,它将调用您的回调函数 -- 而非在完成时。您必须监听数据 (res.on('data', function(chunk) { ... });
) 并缓冲传入的数据,然后在 res
发出 end
时使用它来调用 JSON.parse(bufferString)
。点击此处查看示例。 - josh3736