实际上我使用htmlparser解析了一个网站,我想在解析的对象中找到一个特定的值,例如字符串“$ 199”,并继续跟踪该元素(通过定期解析)到看到价值仍然是“199美元”或已经改变。
在用眼睛进行一些痛苦的愚蠢搜索之后,我发现该字符串位于这样的某个地方:
price = handler.dom[3].children[3].children[3].children[5].children[1].
children[3].children[3].children[5].children[0].children[0].raw;
所以我想知道是否有方法不那么痛苦?谢谢!
答案 0 :(得分:0)
基于树的递归搜索可能最容易获得您感兴趣的节点。
我没有使用htmlparser
,文档看起来有点薄,所以这只是一个让你入门并未经过测试的例子:
function getElement(el,val) {
if (el.children && el.children.length > 0) {
for (var i = 0, l = el.children.length; i<l; i++) {
var r = getElement(el.children[i],val);
if (r) return r;
}
} else {
if (el.raw == val) {
return el;
}
}
return null;
}
调用getElement(handler.dom[3],'$199')
,它会递归遍历所有子项,直到找到没有children
的元素,然后将其原始值与'$ 199'进行比较。请注意,这是一个直接的比较,您可能想要将其替换为正则表达式或类似的?