gpt4 book ai didi

node.js - 使用 xpath 和 cheerio 获取元素

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:27 24 4
gpt4 key购买 nike

尝试在 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 模块帮助我编写代码吗?

最佳答案

看起来您正在做更多的工作,然后您需要找到所需的元素。您可以发布示例 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 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16010551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com