Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 使用xpath和cheerio获取元素大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
试图在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存储为此mathed元素.然后我继续挖掘新的xpath部分.代码看起来像这样,但它无法得到我想要的东西,因为在我得到第@L_975_0@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模块帮助我使用代码吗?

解决方法

看起来你正在做更多的工作然后你需要找到所需的元素.你可以发一个示例html页面吗?

Cheerio提供了更高级别的API来查找您应该使用的元素.

var html = fs.readFileSync('aaa.html')
var $= cheerio.load(html)
var SELEctor = 'div' // some SELEctor here which I can tune to the example html page
var parent = $(SELEctor)
var childSELEctor = 'p' // some other SELEctor 
var children = parent.find(childSELEctor)

大佬总结

以上是大佬教程为你收集整理的node.js – 使用xpath和cheerio获取元素全部内容,希望文章能够帮你解决node.js – 使用xpath和cheerio获取元素所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。