尝试在 node.js 中编写一个函数,该函数将通过 xpath 获取元素。
我有一个所需 dom 元素的 xpath,例如
xpath = '/html/body/div/div[2]/div/h1/span'
我的 DOM 通过 fs 模块加载到Cheerio中(因为我有这个网页存储在本地):
var file = fs.readFileSync( "aaa.html" )
var inDom = cheerio.load( file )
然后我尝试遍历每个 xpath 部分,获取 dom 树的元素,检查名称和元素编号是否匹配的子元素,如果匹配,则将rez存储为此数学元素。然后我继续挖掘新的 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 模块帮助我编写代码吗?