使用正则表达式进行HTML解析的替代方案

3
我正在使用node.js通过正则表达式解析HTML以返回字符串。但是在这篇文章中有人告诉我这不是一个好主意:在node.js中从HTTP请求中提取特定字符串 有哪些更可靠的替代方案?
作为新手,教程链接会非常有帮助。我很难理解一些文档的解释。

1
你已经被告知了这个问题,但你最好读一下这个链接,以完全了解情况。基本问题涉及正则表达式“机器”模型的理论“能力”,与解析像HTML这样的语言所需的能力之间的区别。这涉及到语言/自动机理论。 - Pointy
你可以查看这个链接:https://dev59.com/Wms05IYBdhLWcg3wPPWB - HoLyVieR
1个回答

3

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语句吗? - mnort9
http.get(..., function(res) { ... }); 建立连接并开始接收数据时,它将调用您的回调函数 -- 而非在完成时。您必须监听数据 (res.on('data', function(chunk) { ... });) 并缓冲传入的数据,然后在 res 发出 end 时使用它来调用 JSON.parse(bufferString)点击此处查看示例。 - josh3736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接