Пытается написать функцию в node.js, которая получит элемент по xpath.Получение элемента с использованием xpath и cheerio
У меня есть XPath требуемого элемента йота как
xpath = '/html/body/div/div[2]/div/h1/span'
Мой DOM загружен в Cheerio через фс модуль (потому что я этот веб-страницы хранятся локально):
var file = fs.readFileSync("aaa.html")
var inDom = cheerio.load(file)
Тогда Я пытаюсь выполнить итерацию через каждую часть xpath, получить элемент дерева дерева, проверить его дочерние элементы, если имя и номер элемента совпадают, и если они это сделают, сохраните rez, так как этот элемент т. Затем я продолжаю копать новую часть xpath. Код выглядит так, но он не может получить то, что я хочу, потому что сразу после того, как я получу первый маш и установил rez в качестве согласованного элемента, в следующем цикле цикла этот новый элемент, похоже, не имеет каких-либо дочерних элементов.
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