试图在node.js中编写一个函数,该函数将通过xpath获取元素。使用xpath和cheerio获取元素
我具有所需的DOM元素的像
xpath = '/html/body/div/div[2]/div/h1/span'
我的DOM装入cheerio的XPath通过fs的模块(因为我此网页存储在本地):
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
然后我试图通过每个xpath部分进行迭代,获取dom树的元素,如果名称和元素编号匹配,请检查它是否为子元素,如果他们这样做,则将rez作为此mathed元素存储吨。然后我继续挖掘新的xpath部分。代码看起来像这样,但它没有得到我想要的东西,因为在我得到第一个mach并将rez设置为匹配元素后,在下一个for循环中,此新元素似乎没有任何子元素。
var rez = inDom('html');
var xpath = inXpath.split("/");
for(var i = iterateStart; i < xpath.length; i++) {
var selector = xpath[ i ].split('[')[0];
var matches = xpath[ i ].match(/\[(.*?)\]/);
var child = 0;
if(matches) {
child = matches[ 1 ];
}
for(var k = 0; k < rez.length; k++) {
var found = false
var curE = rez[ k ]
for(var p = 0; p < curE.children.length; p++) {
var curE_child = curE.children[ p ]
if(curE_child.name = selector) {
if(child > 0) {
child--
}
else {
rez = curE_child
found = true
break
}
}
}
if(found) {
break
}
}
}
任何人都可以帮我使用提到的node.js模块的代码?
我没有实现你的方法,我被困在获取时,例如,第三个元素,当xpath的部分就像'../ div [3]/...'。我使用这里粘贴的代码http://pastebin.com/pzSYz6Zc错误也被粘贴。 – Astro
没有任何示例html很难给你提供建议。请发布示例html页面 – Noah
没有html页面,它是从node.js代码 – Astro